Symfony 3.4 - у меня проблема с использованием knp-paginator-bundle - PullRequest
0 голосов
/ 15 мая 2018

У меня есть следующий контроллер

/**
*
* @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,
    ));
}

Может кто-нибудь помочь мне решить эту проблему?

Значение сеанса

1 Ответ

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

Может быть, $ sessionName-> get ('SName') пусто или равно нулю?, Вы можете попробовать установить значение по умолчанию для сеанса следующим образом:

$sessionName->get('SName', 'something default');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...