Ojs\SiteBundle\Controller\ExploreController::publisherAction PHP Метод

publisherAction() публичный Метод

public publisherAction ( Request $request, integer $page = 1 ) : Response
$request Symfony\Component\HttpFoundation\Request
$page integer
Результат Symfony\Component\HttpFoundation\Response
    public function publisherAction(Request $request, $page = 1)
    {
        $getTypes = $request->query->get('type_filters');
        $typeFilters = !empty($getTypes) ? explode(',', $getTypes) : [];
        $publisherSearcher = $this->get('fos_elastica.index.search.publisher');
        $boolQuery = new Query\BoolQuery();
        if (!empty($typeFilters)) {
            foreach ($typeFilters as $type) {
                $match = new Query\Match();
                $match->setField('publisher.publisherType.name', $type);
                $boolQuery->addMust($match);
            }
        }
        $publisherQuery = new Query($boolQuery);
        $publisherQuery->setSort(['name.raw' => ['order' => 'asc']]);
        $typeAgg = new Aggregation\Terms('types');
        $typeAgg->setField('publisher.publisherType.name');
        $typeAgg->setOrder('_term', 'asc');
        $typeAgg->setSize(0);
        $publisherQuery->addAggregation($typeAgg);
        $adapter = new ElasticaAdapter($publisherSearcher, $publisherQuery);
        $pagerfanta = new Pagerfanta($adapter);
        $pagerfanta->setMaxPerPage(20);
        $pagerfanta->setCurrentPage($page);
        $publishers = $pagerfanta->getCurrentPageResults();
        $types = $adapter->getResultSet()->getAggregation('types')['buckets'];
        $data = ['types' => $types, 'page' => 'ojs_site_explore_publisher', 'publishers' => $publishers, 'pagerfanta' => $pagerfanta, 'type_filters' => $typeFilters, 'search_section' => 'publisher'];
        return $this->render('OjsSiteBundle:Explore:publisher.html.twig', $data);
    }