17734027950/pagerfanta-bundle

用于在 Symfony2 中使用 Pagerfanta 的组件

安装: 15

依赖者: 0

建议者: 0

安全性: 0

星级: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

v1.1.2 2018-04-25 09:10 UTC

This package is auto-updated.

Last update: 2024-09-25 18:09:21 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" 来传播页码。默认情况下,该组件使用名为 defaultDefaultView。默认语法是

<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') }}

渲染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文件。