gpt4 book ai didi

php - 在 Symfony2 中使用 Pagerfanta 进行分页的正确方法是什么

转载 作者:可可西里 更新时间:2023-11-01 12:35:42 26 4
gpt4 key购买 nike

我读到过 Pagerfanta 是 Symfony2 的首选分页插件,但我在让它正常工作时遇到了一些麻烦。我已经下载了 pagerfanta 和 PagerfantaBundle 的代码,并按照 WhiteOctober Github readme file 中的说明安装了它们。在this tutorial .我很确定我的 Controller 中的代码没问题,但是我的模板文件有问题。

我的 Controller 代码:

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 个项目。

我没有更改添加分页代码之前的路线,因为文档说:

The routes are generated automatically for the current route using the variable "page" to propagate the page number.

...但我想知道不正确的路由是否是问题的一部分。假设是这种情况,我不确定如何进行。

除了我在上面链接到的资源之外,我找不到任何说明,所以如果成功实现了这个的人可以分享他们是如何做到的细节,那就太好了。

最佳答案

我认为您的应用程序不知道如何将 ?page=2 解析为 Controller 操作。

在您的 route 包含一个{page}(正如@AdrienBrault 回复的那样),您希望它有分页。

像这样:

my_index:
pattern: /{page}
defaults: { _controller: MyTestBundle:Object:index, page: 1 }
requirements:
_method: GET
page: \d+

PagerFantaBundle 将(我猜)尝试猜测正确的路线。

为我工作。

关于php - 在 Symfony2 中使用 Pagerfanta 进行分页的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12352945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com