sinasalek / silex-pagerfanta-provider
Silex 的 Pagerfanta 库 ServiceProvider
v1.1.0
2015-04-07 17:34 UTC
Requires
- pagerfanta/pagerfanta: ~1.0,>=1.0.3
- silex/silex: ~1.0
- symfony/property-access: ~2.2
This package is auto-updated.
Last update: 2024-08-29 03:47:39 UTC
README
用于与 Pagerfanta 和 Silex 一起使用的 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
));
})