hackeurtalibe/pagerfanta-bundle

用于在 Symfony2 中使用 Pagerfanta 的包

安装: 62

依赖项: 0

建议者: 0

安全: 0

星星: 0

关注者: 1

分支: 109

类型:symfony-bundle

v1.1 2017-10-05 13:46 UTC

README

Build Status Scrutinizer Quality Score SensioLabsInsight

用于在 PagerfantaSymfony 中使用的包。

注意:如果您正在使用 Symfony2 的 2.0.x 版本,请使用此包的 symfony2.0 分支。此包的主分支跟踪 Symfony 的主分支。

该包包括

  • 用于渲染带有视图和选项的 pagerfantas 的 Twig 函数。
  • 轻松使用视图的方法。
  • 在视图中重复使用选项的方法。
  • DefaultView 的基本 CSS。

安装

  1. 使用 Composer 下载库
php composer.phar require white-october/pagerfanta-bundle
  1. 然后将 WhiteOctoberPagerfantaBundle 添加到您的应用程序内核
// app/AppKernel.php
public function registerBundles()
{
    return array(
        // ...
        new WhiteOctober\PagerfantaBundle\WhiteOctoberPagerfantaBundle(),
        // ...
    );
}
  1. 配置和使用吧!

A) 创建分页器Pagerfanta 文档中有展示。如果您使用 Doctrine ORM,您将需要使用 DoctrineORMAdapter

B) 在 Twig 中渲染 在下面的 渲染分页器 部分中有展示。

C) 配置 通过此文档展示

渲染分页器

首先,您需要将 Pagerfanta 实例作为参数传递到您的模板中。例如

$adapter = new DoctrineORMAdapter($queryBuilder);
$pagerfanta = new Pagerfanta($adapter);
    return $this->render('@YourApp/Main/example.html.twig', [
    'my_pager' => $pagerfanta,
]);

然后调用 Pagerfanta Twig 扩展,传递 Pagerfanta 实例。路由将自动为当前路由使用变量 "page" 生成页面号。默认情况下,该包使用具有 "default" 名称的 DefaultView。默认语法是

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

默认情况下,"page" 变量也添加到链接到第一页。要禁用在 URL 中生成 ?page=1,只需在调用 pagerfanta twig 函数时将 omitFirstPage 选项设置为 true 即可

{{ pagerfanta(my_pager, 'default', { 'omitFirstPage': true}) }}

您可以选择省略模板参数以使函数调用更短,默认模板将被使用

{{ pagerfanta(my_pager, { 'omitFirstPage': true }) }}

如果一页上有多个分页器,您需要更改 page 参数的名称。以下是一个示例

<div class="pagerfanta">
    {{ pagerfanta(my_other_pager, 'default', {'pageParameter': '[page_other]'}) }}
</div>

请注意 page_other 周围的方括号;没有它们将不起作用。

Twitter Bootstrap

该包还有一个 Twitter Bootstrap 视图。

对于 Bootstrap 2

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

对于 Bootstrap 3

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

自定义模板

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

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

带选项

{{ pagerfanta(my_pager, 'default', { 'proximity': 2}) }}

有关可能的参数列表,请参阅 Pagerfanta 文档

渲染项目页面本身

可以使用 currentPageResults 获取项目。例如

{% for item in my_pager.currentPageResults %}
    <ul>
        <li>{{ item.id }}</li>
    </ul>
{% endfor %}

翻译成您的语言

该包还提供两种视图来翻译 defaulttwitter bootstrap 视图。

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

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

添加视图

视图通过 pagerfanta.view 标签添加到容器中

XML

<service id="pagerfanta.view.default" class="Pagerfanta\View\DefaultView" public="false">
    <tag name="pagerfanta.view" alias="default" />
</service>

YAML

services:
    pagerfanta.view.default:
        class: Pagerfanta\View\DefaultView
        public: false
        tags: [{ name: pagerfanta.view, alias: default }]

重复使用选项

有时您想在项目中重复使用视图的选项,而您不想每次渲染视图时都写它们,或者您可以为视图有不同的配置,您想将它们保存在一个地方以便能够轻松更改。

为此,您需要使用特殊的视图 OptionableView 定义视图

services:
    pagerfanta.view.my_view_1:
        class: Pagerfanta\View\OptionableView
        arguments:
            - @pagerfanta.view.default
            - { proximity: 2, prev_message: Anterior, next_message: Siguiente }
        public: false
        tags: [{ name: pagerfanta.view, alias: my_view_1 }]
    pagerfanta.view.my_view_2:
        class: Pagerfanta\View\OptionableView
        arguments:
            - @pagerfanta.view.default
            - { proximity: 5 }
        public: false
        tags: [{ name: pagerfanta.view, alias: my_view_2 }]

然后使用它

{{ pagerfanta(my_pager, 'my_view_1') }}
{{ pagerfanta(my_pager, 'my_view_2') }}

渲染分页器(或分页符!)最简单的方法;()

默认视图的基本 CSS

这些包包含了基本CSS,以支持默认视图,让您能够更快地开始使用一个功能齐全的分页器。当然,您可以更改它,使用另一个或创建自己的视图。

<link rel="stylesheet" href="{{ asset('bundles/whiteoctoberpagerfanta/css/pagerfantaDefault.css') }}" type="text/css" media="all" />

配置

您可以在配置文件中配置所有渲染的默认视图。

white_october_pagerfanta:
    default_view: my_view_1

当错误页面编号时返回HTTP 500

目前当页面超出范围或不是数字时,服务器默认返回404响应。您可以将以下参数设置为不同于默认值 to_http_not_found(例如,null),以便在请求的页面无效时显示500异常。

// app/config/config.yml
white_october_pagerfanta:
    exceptions_strategy:
        out_of_range_page:        ~
        not_valid_current_page:   ~

更多信息

有关更详细的文档,请参阅Pagerfanta文档

贡献

我们欢迎对此项目的贡献,包括拉取请求和问题(以及对现有问题的讨论)。

如果您想贡献代码但不确定从何开始,您可以查看问题列表。如果您是首次贡献代码,您可能会发现GitHub的分叉项目指南很有帮助。

所有贡献者(无论是贡献代码、参与问题讨论还是以其他方式参与)都必须遵守我们的行为准则

致谢

Pablo Díez(pablodip@gmail.com)为此包第一版的大部分工作。

许可证

Pagerfanta遵循MIT许可证。有关详细信息,请参阅LICENSE文件。