Случай использованияЯ хочу сохранить поисковый запрос и общее количество результатов в БД, чтобы я мог видеть то, что ищут люди, которых нет в моем приложении.
Что работаетЯ могу получить и сохранить запрос, но не могу понять, как получить общее количество результатов поиска.
Вот пример кода из контроллера. Когда я пробую это в настоящее время, я получаю следующее
error: Catchable Fatal Error: Объект класса
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: []
}
Ты должен сделать
$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
Других решений пока нет …