Example #1
0
 public function catsucheAction($catid, Request $request)
 {
     $em = $this->getDoctrine()->getManager();
     $mainCat = [];
     $page = 0;
     $pageOffset = 0;
     if ($request->query->get('p')) {
         $page = $request->query->get('p');
         $pageOffset = ($page - 1) * 12;
     }
     $finder = $this->container->get('fos_elastica.finder.search.articles');
     $boolQuery = new \Elastica\Query\BoolQuery();
     if ($request->query->get('q') !== NULL) {
         $searchTerm = $request->query->get('q');
         $fieldQuery = new \Elastica\Query\MultiMatch();
         $fieldQuery->setFields(array('shortName', 'shortDescription', 'longDescription'));
         $fieldQuery->setAnalyzer('custom_search_analyzer');
         $fieldQuery->setOperator('AND');
         $fieldQuery->setQuery($searchTerm);
         $boolQuery->addMust($fieldQuery);
     }
     $categoryQuery = new \Elastica\Query\Terms();
     $categoryQuery->setTerms('catRef', array($catid));
     $boolQuery->addMust($categoryQuery);
     $query = new \Elastica\Query();
     $query->setQuery($boolQuery);
     $query->setSize(10000000);
     $totalpages = ceil(count($finder->find($query)) / 12);
     $query->setSize(12);
     $query->setFrom($pageOffset);
     $articles = $finder->find($query);
     return $this->render('OrthIndexBundle:Shop:kategorien.html.twig', array('articles' => $articles, 'page' => $page, 'totalpages' => $totalpages, 'categories' => $mainCat));
 }