使用自定义模板自定义Pagerfanta分页的布局

Customising the layout of Pagerfanta pagination with a custom template

我已经安装并运行了 Pagerfanta,但是我在自定义布局时遇到了困难。我在 Github 上读到我需要通过 my_template,但是我不确定应该在哪里配置以及具体指的是什么。

自定义模板

如果您想使用自定义模板,请添加另一个参数

<div class="pagerfanta">
    {{ pagerfanta(my_pager, 'my_template') }}
</div>

理想情况下,我希望有自己的可以修改的 Twig 模板,但是我不知道 Pagerfanta 是否支持这个。都在PHP完成了吗?

my_template 是您的视图的别名。您提供的 Github link 的下一部分解释了更多内容。

看起来像这样

services:
    app.view.my_template:
        class: App\View\MyView
        public: false
        tags: [{ name: pagerfanta.view, alias: my_template }]

我认为它不支持 Twig 模板,但你可以肯定地编写自定义 Template class 来呈现你想要的分页。

假设在您的 AppBundle 中,您将需要创建 MyCustomTemplate class,它应该扩展 Pagerfanta\View\Template\DefaultTemplate:

<?php

namespace Acme\AppBundle\Template;

use Pagerfanta\View\Template\DefaultTemplate;

class MyCustomTemplate extends DefaultTemplate
{
    // override whatever you need here ...
}

然后将其与查看服务一起注册到您的 services.yml 文件中:

services:
    acme_app.template.my_template:
        class: Acme\AppBundle\Template\MyCustomTemplate

    pagerfanta.view.my_template:
        class: Pagerfanta\View\DefaultView
        public: false
        arguments:
            - "@acme_app.template.my_template"
        tags: [{ name: pagerfanta.view, alias: my_template }]

然后在您的 Twig 模板中,您将能够使用:

{{ pagerfanta(my_pager, 'my_template') }}

这将导致显示您的自定义分页模板。