src/Controller/FrontendSearchController.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Pimcore\Controller\FrontendController;
  4. use Pimcore\Model\Document;
  5. use Pimcore\Model\Asset;
  6. use Pimcore\Model\Search\Backend\Data;
  7. use Knp\Component\Pager\PaginatorInterface;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. class FrontendSearchController extends FrontendController
  11. {
  12.     /**
  13.      * @param Request $request
  14.      *
  15.      * @return Response
  16.      *
  17.      * @throws \Exception
  18.      */
  19.     /**
  20.      * @param Request $request
  21.      *
  22.      * @return Response
  23.      */
  24.     public function searchAction(Request $requestPaginatorInterface $paginator)
  25.     {
  26.         $params $request->query->all();
  27.         $query $request->query->get('query');
  28.         $searcherList = new Data\Listing();
  29.         $db \Pimcore\Db::get();
  30.         $queryCondition "( MATCH (data,properties) AGAINST (" $db->quote($query) . " IN BOOLEAN MODE) )";
  31.         $searcherList->setCondition($queryCondition);
  32.         $hits $searcherList->load();
  33.         $elements = array();
  34.         foreach ($hits as $hit) {
  35.             $element =  \Pimcore\Model\Element\Service::getElementById($hit->getId()->getType(), $hit->getId()->getId());
  36.             if ($element instanceof Document && $element->isPublished()) {
  37.                  $elements[] = $element;
  38.             } elseif ($element instanceof Asset) {
  39.                 if ($element->getType() == 'document') {
  40.                      $elements[] = $element;
  41.                 }
  42.             } elseif ($element instanceof \Pimcore\Model\DataObject\AbstractObject && $element->getType() != "folder" && $element->isPublished()) {
  43.                 //print_r(get_class_methods($element));
  44.                 
  45.                     if (in_array($element->getClassName(), array("Event""ServiceProvider""News""Blog""Project""RdResourceItem""ResourceItem"))) {
  46.                         $elements[] = $element;
  47.                     }
  48.                    
  49.             }
  50.         }
  51.         $paginator $paginator->paginate(
  52.             $elements,
  53.             $request->get('page'1),
  54.             10
  55.         );
  56.         return $this->render('search/result.html.twig', [
  57.             'results' => $elements,
  58.             'paginationVariables' => $paginator->getPaginationData(),
  59.             'params' => $params,
  60.             'pagedresults' => $paginator,
  61.             'hitcount' => count($elements)
  62.         ]);
  63.     }
  64. }