php – 在Symfony2中使用Pagerfanta进行分页的正确方法是什么
发布时间:2020-12-13 13:28:23 所属栏目:PHP教程 来源:网络整理
导读:我已经读过,Pagerfanta是Symfony2的首选分页插件,但我在使其正常工作时遇到了一些麻烦.我已经下载了pagerfanta和PagerfantaBundle的代码,并按照 WhiteOctober Github readme file和 this tutorial中的描述安装了它们.我很确定我的控制器中的代码是可以的,但
我已经读过,Pagerfanta是Symfony2的首选分页插件,但我在使其正常工作时遇到了一些麻烦.我已经下载了pagerfanta和PagerfantaBundle的代码,并按照
WhiteOctober Github readme file和
this tutorial中的描述安装了它们.我很确定我的控制器中的代码是可以的,但我的模板文件有问题.
我的控制器代码: public function indexAction($page = null) { ... $query = $em->createQuery('SELECT something FROM some_table'); $adapter = new DoctrineORMAdapter($query); $pager = new Pagerfanta($adapter); $pager->setMaxPerPage(10); if (!$page) $page = 1; try { $pager->setCurrentPage($page); } catch(NotValidCurrentPageException $e) { throw new NotFoundHttpException('Illegal page'); } return $this->render('MyBundle:MyEntity:index.html.twig',array( 'pager' => $pager,)); } 在我的模板中: ... <table> {% for object in pager.currentPageResults %} <tr> <td>{{ object.attribute1 }}</td> <td>{{ object.attribute2 }}</td> <td>{{ object.attribute3 }}</td> </tr> {% endfor %} </table> {% if pager.haveToPaginate %} {{ pagerfanta(pager) }} {% endif %} 当我转到页面时,我会得到前10个对象的列表.但是,寻呼机的渲染只是PreviousNext作为一个单词(不是链接,没有页面1,2,3等). 如果我将?page = 2添加到URL,它不会显示列表中的下10个项目. 在添加分页代码之前,我没有改变路线,因为文档说:
…但我想知道错误的路由是否是问题的一部分.假设是这种情况,我不知道如何继续这样做. 我一直无法找到上面链接到的其他来源的任何说明,所以如果成功实现此功能的人可以分享他们如何做到这一点的详细信息将会很棒.
我认为你的应用程序不知道如何解析?page = 2到控制器动作.
在您的路线中添加{page}(如@AdrienBrault所述),您希望对其进行分页. 像这样: my_index: pattern: /{page} defaults: { _controller: MyTestBundle:Object:index,page: 1 } requirements: _method: GET page: d+ PagerFantaBundle(我猜)会尝试猜测正确的路线. 为我工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |