У меня есть следующий контроллер
/**
*
* @Route("/searchname" , name="search_student_name")
*
*/
public function SearchStudentName(Request $request, SessionInterface $sessionName)
{
$params = $request->request->all();
$SName = $params['txtSearchName'];
if (isset($SName)){
$sessionName->set('SName', $SName);
}
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery("SELECT s FROM AppBundle:Student s WHERE s.name LIKE :Name ORDER BY s.name");
$query->setParameter('Name', '%'.$sessionName->get('SName').'%');
$students = $query->getArrayResult();
$paginator = $this->get('knp_paginator');
$result = $paginator->paginate(
$students,
$request->query->get('page', 1)/*page number*/,
50/*limit per page*/
);
return $this->render('student/index.html.twig', array(
'students' => $result,
));
}
Первая страница отображалась правильно.
Но когда я пытаюсь перейти на другую страницу
app_dev.php/student/searchname?page=2
У меня следующая ошибка:
NotFoundHttpException
HTTP 404 не найден
AppBundle \ Entity \ Student объект не найден аннотацией @ParamConverter.
У меня есть indexAction, который отлично работает для любой страницы:
единственное отличие состоит в том, что $ Students = $ em-> getRepository ('AppBundle: Student') -> findAll ();
и использование сеанса для сохранения имени
/**
* Lists all student entities.
*
* @Route("/", name="student_index")
* @Method("GET")
*/
public function indexAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$students = $em->getRepository('AppBundle:Student')->findAll();
/**
* @var $paginator \Knp\Component\Pager\Paginator
*/
$paginator = $this->get('knp_paginator');
$result = $paginator->paginate(
$students,
$request->query->get('page', 1)/*page number*/,
50/*limit per page*/
);
return $this->render('student/index.html.twig', array(
'students' => $result,
));
}
Может кто-нибудь помочь мне решить эту проблему?
Значение сеанса