同一页面中的symfony分页多个

时间:2017-04-19 21:06:32

标签: php symfony pagination

我会在同一页面上添加几个分页按钮。这是我的页面:

https://i.stack.imgur.com/IV7xy.jpg

目前我使用这样的knppaginator:

$paginator  = $this->get('knp_paginator');
    $pagination = $paginator->paginate(
        $demandes,
        $request->query->getInt('page', 1),
        5
    );

我尝试以这种方式使用knppaginator:

$paginator  = $this->get('knp_paginator');
    $pagination = $paginator->paginate(
        $demandes,
        $request->query->getInt('page', 1),
        5
    );
    $paginator  = $this->get('knp_paginator');
    $paginationF = $paginator->paginate(
        $forumTopics,
        $request->query->getInt('page', 1),
        5
    );

但它不起作用。当我用一个页面更改页面时,它会更改另一个页面。

谢谢。

2 个答案:

答案 0 :(得分:3)

我认为这是因为你使用相同的" page"两个分页的参数。试试这个

$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
    $demandes,
    $request->query->getInt('page', 1),
    5
);

$paginationF = $paginator->paginate(
        $forumTopics,
        $request->query->getInt('otherPage', 1),
        5,
       ['pageParameterName' => 'otherPage']
    );

答案 1 :(得分:1)

这是因为,默认情况下,所有服务都是共享的。这意味着每次检索服务时,您都会获得相同的实例 - see reference

但是,如果您将服务定义标记为不共享,则可以在服务定义中进行更改,因为文档正在提议:

# app/config/services.yml
services:
    app.some_not_shared_service:
        class: ...
        shared: false
        # ...

在您的情况下,您的服务名为knp_paginator,来自其捆绑包。

因此,您只需更改自己的app/config/services.yml即可使其服务不共享:

# app/config/services.yml
services:
    knp_paginator:
        shared: false