使用KnpPaginatorBundle的多个模板

Mar*_*ana 2 php symfony twig knppaginator symfony-2.5

我使用KnpPaginatorBundle来管理我网站后台的分页,效果很好

我将其配置为使用自定义模板

knp_paginator:
    template:
        pagination: MyappMainBundle::pagination.html.twig
Run Code Online (Sandbox Code Playgroud)

然后,我想在前台使用相同的包但具有不同的html结构.所以,我的问题是:是否可以为分页设置两个模板?一个用于后台,一个用于前台.

提前感谢您的回答.

Mat*_*teo 7

您可以在控制器中自定义分页模板:

$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate($target, $page);
$pagination->setTemplate('MyBundle:Pagination:pagination.html.twig');
$pagination->setSortableTemplate('MyBundle:Pagination:sortable.html.twig');
Run Code Online (Sandbox Code Playgroud)

在视图中:

{% do pagination.setTemplate('MyBundle:Pagination:pagination.html.twig') %}
Run Code Online (Sandbox Code Playgroud)

或者(更好)在渲染方法中:

{{ knp_pagination_render(pagination, 'MyBundle:Pagination:pagination.html.twig') }}
Run Code Online (Sandbox Code Playgroud)

捆绑文档中的更多信息

  • 或者你可以使用自己的twig函数扩展`Knp\Bundle\PaginatorBundle\Twig\Extension\PaginationExtension`,例如`acme_pagination_render_backoffice()`然后调用`return $ this-> render($ paginator,':: backoffice_paginator.html) .twig',$ queryParam,$ viewParams)`已经设置模板的方法.这样您就不需要在渲染器分页器的每次使用上设置模板. (2认同)