我在跨多个控制器的 Symfony + Twig 项目中使用 \Knp\Component\Pager\PaginatorInterface。我遇到的问题是页面参数在所有控制器的 URL 中都存在。即使在根本没有实现 PaginatorInterface 的页面上,也包括在 page 参数以不同方式命名的页面上。这会导致奇怪的 URL。
当我在我的应用程序中点击“新闻”、“博客”等某些页面时,URL 会变长并且像
domain.tld/summersale?bloglistpage=3&newslistpage=7
,而我实际上是从菜单中点击“夏季促销”。我期望生成的链接是“domain.tld/summersale”。 - 如果不需要,如何让这些参数消失?
我像这样在控制器中实现分页:
$paginator = $paginator->paginate(
$distributors,
$request->get('bloglistpage', 1),
9,
['pageParameterName' => 'bloglistpage']
);
....
return $this->render(
'template.html.twig',
array(
"items" => $paginator,
'paginationVariables' => $paginator->getPaginationData()
)
);
在模板中我生成链接
{{ pimcore_url({}, 'blog-route') }}">
因为我不知道我所描述的行为问题的来源(控制器?PaginationInterface?Twig path()?)我无法自己想出解决方案。
我提到我通过 Twig 使用
{{ path() }}
创建 URL 或通过 {{ pimcore_url() }}
创建特定于项目的 URL。
我还在不同的控制器中重命名了页面参数,这样至少新闻和博客项目的特定于控制器的分页不会弄乱。