hackeurtalibe / pagerfanta-bundle
用于在 Symfony2 中使用 Pagerfanta 的包
Requires
- pagerfanta/pagerfanta: 1.0.*
- symfony/framework-bundle: ~2.3|~3.0
- symfony/property-access: ~2.3|~3.0
- symfony/twig-bundle: ~2.3|~3.0
Requires (Dev)
- phpunit/phpunit: ~3.7
- symfony/symfony: ~2.3|~3.0
This package is not auto-updated.
Last update: 2024-09-18 21:21:40 UTC
README
用于在 Pagerfanta 与 Symfony 中使用的包。
注意:如果您正在使用 Symfony2 的 2.0.x 版本,请使用此包的 symfony2.0 分支。此包的主分支跟踪 Symfony 的主分支。
该包包括
- 用于渲染带有视图和选项的 pagerfantas 的 Twig 函数。
- 轻松使用视图的方法。
- 在视图中重复使用选项的方法。
- DefaultView 的基本 CSS。
安装
- 使用 Composer 下载库
php composer.phar require white-october/pagerfanta-bundle
- 然后将 WhiteOctoberPagerfantaBundle 添加到您的应用程序内核
// app/AppKernel.php public function registerBundles() { return array( // ... new WhiteOctober\PagerfantaBundle\WhiteOctoberPagerfantaBundle(), // ... ); }
- 配置和使用吧!
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 %}
翻译成您的语言
该包还提供两种视图来翻译 default 和 twitter 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文件。