[英]What is correct way to use Pagerfanta for pagination in Symfony2
我已经读过,Pagerfanta是Symfony2的首选分页插件,但我在使其正常工作时遇到了一些麻烦。 我已经下载了pagerfanta和PagerfantaBundle的代码,并按照WhiteOctober Github自述文件和本教程中的描述安装它们。 我很确定我的控制器中的代码是可以的,但我的模板文件有问题。
我的控制器代码:
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”自动为当前路由生成路由以传播页码。
...但我想知道错误的路由是否是问题的一部分。 假设是这种情况,我不知道如何继续这样做。
我一直无法找到上面链接到的其他来源的任何说明,所以如果成功实现此功能的人可以分享他们如何做到这一点的详细信息将会很棒。
我认为您的应用程序不知道如何解析?page=2
到控制器操作。
在您的路线中添加{page}(如@AdrienBrault所述),您希望对其进行分页。
像这样:
my_index:
pattern: /{page}
defaults: { _controller: MyTestBundle:Object:index, page: 1 }
requirements:
_method: GET
page: \d+
PagerFantaBundle(我猜)会尝试猜测正确的路线。
为我工作。
我不得不在我的路由中使用'currenPage'而不是'page',我找到了一种方法:
{{ pagerfanta(pager, 'my_pager_view', {'pageParameter':'[currentPage]'}) }}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.