Как получить общее количество для поискового запроса в контроллере в Symfony - PullRequest
0 голосов
/ 15 мая 2018

Вариант использования : Я хочу сохранить поисковый запрос и общее количество результатов в БД, чтобы я мог видеть то, что ищут люди, которых нет в моем приложении.

Что работает : я могу получить и сохранить запрос, но не могу понять, как получить общее количество результатов поиска.

Вот пример кода из контроллера. Когда я пробую это в настоящее время, я получаю следующее

ошибка: исправляемая фатальная ошибка: объект класса Knp \ Bundle \ PaginatorBundle \ Pagination \ SlidingPagination не может быть преобразован в строку

Я пытался трактовать $ pagination как массив, запрашивая $ pagination [totalCount], но он только что возвратил ноль.

 public function fpcAction(Request $request)
    {

            $query = dump($request->query->get('q'));

            $finder = $this->container->get('fos_elastica.finder.app.product');
            $page = $request->query->getInt('page', 1);

            $paginator = $this->get('knp_paginator');
            $results = $finder->createPaginatorAdapter($query);
            $pagination = $paginator->paginate($results, $page, 12);



            $searchmetrics = new SearchTerms();
            $searchmetrics->setSearchterm($query);
            $searchmetrics->setDate(time());

            // TODO: Need to get the total qty of search results for this specific query
            $searchmetrics->setResultsqty($pagination);

            $entityManager = $this->getDoctrine()->getManager();
            $entityManager->persist($searchmetrics);
            $entityManager->flush();


            return $this->render('default/search.html.twig', ['searchresults' => $pagination, 'query' => $query]);

    }

Вот дамп переменной, который выводится на шаблон веточки:

 "searchresults" => SlidingPagination {#1028 ▼
    -route: "search"
    -params: array:1 [▶]
    -pageRange: 5
    -template: "@KnpPaginator/Pagination/sliding.html.twig"
    -sortableTemplate: "@KnpPaginator/Pagination/sortable_link.html.twig"
    -filtrationTemplate: "@KnpPaginator/Pagination/filtration.html.twig"
    #currentPageNumber: 1
    #numItemsPerPage: 12
    #items: array:12 [▶]
    #totalCount: 8104
    #paginatorOptions: array:6 [▶]
    #customParameters: []
  }

1 Ответ

0 голосов
/ 15 мая 2018

Вы должны сделать

$searchmetrics->setResultsqty($pagination->getTotalItemCount());

На самом деле, $pagination относится к классу Knp\Bundle\PaginatorBundle\Pagination\SlidingPagination, и это код родительского класса Knp\Component\Pager\Pagination\AbstractPagination https://github.com/KnpLabs/knp-components/blob/master/src/Knp/Component/Pager/Pagination/AbstractPagination.php#L118:L121

...