sinasalek/silex-pagerfanta-provider

Silex 的 Pagerfanta 库 ServiceProvider

v1.1.0 2015-04-07 17:34 UTC

This package is auto-updated.

Last update: 2024-08-29 03:47:39 UTC


README

用于与 PagerfantaSilex 一起使用的 Provider

此 Provider 基于 WhiteOctoberPagerfantaBundle 并包含

  • 用于渲染带有视图和选项的 pagerfantas 的 Twig 函数。
  • 轻松使用视图的方式。

安装

您需要将以下内容添加到您的 composer.json 文件中

"franmomu/silex-pagerfanta-provider": "1.0.*@dev"

或者如果您使用 Symfony2.2 组件

"franmomu/silex-pagerfanta-provider": "dev-master"

注册

$app->register(new FranMoreno\Silex\Provider\PagerfantaServiceProvider());

参数

以下是默认参数

$app['pagerfanta.view.options'] = array(
    'routeName'        => null,
    'routeParams'      => array(),
    'pageParameter'    => '[page]',
    'proximity'        => 3,
    'next_message'     => '»',
    'previous_message' => '«',
    'default_view'     => 'default'
);

渲染分页

Twig 扩展提供了此功能

{{ pagerfanta(my_pager, view_name, view_options) }}

使用变量 "page" 自动为当前路由生成路由,以传播页码。默认情况下,此包使用具有 default 名称的 DefaultView

{{ pagerfanta(my_pager) }}

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

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

带有选项

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

请参阅 Pagerfanta 文档以获取参数列表。

添加自定义模板

您可以使用与 DefaultView 一起提供的 CSS 类,但如果您想创建自定义视图,您必须实现 Pagerfanta\View\ViewInterface,然后将视图添加到工厂中

$app['pagerfanta.view_factory'] = $app->share($app->extend('pagerfanta.view_factory', function($viewFactory, $app) {
    $customView = new \Foo\Bar\View\CustomView();
    $viewFactory->add(array(
        'my_view' => $customView
    ));

    return $viewFactory;
}));

并且如果要将它设置为默认视图

$app['pagerfanta.view.options'] = array(
    'default_view'  => 'my_view'
);

在控制器中使用

use Pagerfanta\Pagerfanta;
use Pagerfanta\Adapter\ArrayAdapter;

$app->get('/index', function (Request $request) use ($app) {

    $results = $app['some.service']->getResults();

    $adapter = new ArrayAdapter($results);
    $pagerfanta = new Pagerfanta($adapter);
    $pagerfanta->setMaxPerPage(10);
    $pagerfanta->setCurrentPage($request->query->get('page', 1));

    return $app['twig']->render('index.html', array(
        'my_pager' => $pagerfanta
    ));
})