17734027950 / pagerfanta-bundle
用于在 Symfony2 中使用 Pagerfanta 的组件
Requires
- pagerfanta/pagerfanta: 1.0.*
- symfony/framework-bundle: ~2.3|~3.0|~4.0
- symfony/property-access: ~2.3|~3.0|~4.0
- symfony/twig-bundle: ~2.3|~3.0|~4.0
Requires (Dev)
- phpunit/phpunit: ~3.7|~4.0
- symfony/symfony: ~2.3|~3.0|~4.0
This package is auto-updated.
Last update: 2024-09-25 18:09:21 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') }}
渲染pagerfantas(或分页器!)的最简单方法 ;)
默认视图的基本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文件。