2015-12-28 4 views
2

Я пытаюсь заставить PagerFanta работать для размещения моих данных. Я могу просмотреть первую страницу и сгенерированный код в разделе pagerfanta генерирует все правильные ссылки, однако, когда я нажимаю на любую из этих ссылок, я получаю исключение в заголовке. Похоже, что функция твига pagerfanta не дает правильного параметра при создании маршрутов.(«Параметр» «для маршрута» «должен соответствовать« [^ /] ++ »(« «данный») с использованием pagerfanta

действие

контроллер:

/** 
    * @Route("/people/{page}", name="view_people") 
    * @Template("AppBundle:Default:people.html.twig") 
    */ 
    public function viewPeopleAction($page) 
    { 
     $people = $this->getDoctrine() 
      ->getRepository('AppBundle\Entity\Person') 
      ->findAll(); 
     $adapter = new ArrayAdapter($people); 
     $pager = new Pagerfanta($adapter); 
     $pager->setMaxPerPage(45); 

     try { 
      $pager->setCurrentPage($page); 
     } catch(NotValidCurrentPageException $e) { 
      throw new NotFoundHttpException(); 
     } 

     return array('pager' => $pager); 
    } 

Twig страница:

{% extends '::base.html.twig' %} 

{% block title %}{% endblock %} 

{% block body %} 
    <table> 
    {% for object in pager.currentPageResults %} 
    <tr> 
     <td><a href="{{ path('view_person', {'personid': object.id}) }}">{{ object.name }}</a></td> 
    </tr> 
    {% endfor %} 
</table> 

{% if pager.haveToPaginate %} 
    {{ pagerfanta(pager, "twitter_bootstrap_translated", {"routeName": "view_people", "pageParameter": "[page]"}) }} 
{% endif %} 
{% endblock body %} 
{% block javascripts %} 
{% endblock %} 

Полная ошибка:

An exception has been thrown during the rendering of a template ("Parameter "page" for route "view_people" must match "[^/]++" ("" given) to generate a corresponding URL.") in AppBundle:Default:people.html.twig at line 15. 

500 Internal Server Error - Twig_Error_Runtime 
1 linked Exception: 
InvalidParameterException » 

[2/2] Twig_Error_Runtime: An exception has been thrown during the rendering of a template ("Parameter "page" for route "view_people" must match "[^/]++" ("" given) to generate a corresponding URL.") in AppBundle:Default:people.html.twig at line 15. + 

[1/2] InvalidParameterException: Parameter "page" for route "view_people" must match "[^/]++" ("" given) to generate a corresponding URL. 

Что случилось с моим кодом, который вызывает эту ошибку? Любая помощь очень ценится.

ответ

2

Вам необходимо установить значение по умолчанию для параметра page, так как это один будет опущено, когда страница одна:

/** 
* @Route("/people/{page}", name="view_people", defaults={"page"=1}) 
* @Template("AppBundle:Default:people.html.twig") 
*/ 
public function viewPeopleAction($page) 
{ 
    // ... 
}