如何避免在 symfony 控制器之间共享 knp 分页页面参数?

问题描述 投票:0回答:0

我在跨多个控制器的 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。

我还在不同的控制器中重命名了页面参数,这样至少新闻和博客项目的特定于控制器的分页不会弄乱。

symfony twig pimcore knppaginator
© www.soinside.com 2019 - 2024. All rights reserved.