zephyr / pager
dev-master / 2.2.x-dev
2013-06-18 22:09 UTC
Requires
- php: >=5.3.3
- symfony/framework-bundle: >=2.1,<2.6-dev
This package is not auto-updated.
Last update: 2024-09-24 02:47:24 UTC
README
特性
- 支持Twig和PHP模板
- 易于定制和扩展
- 支持DoctrineORM和数组适配器
安装
- 将PagerBundle复制到/src/MakerLabs/PagerBundle
- 在AppKernel中注册组件
- 运行"./app/console assets:install web"命令
- 完成。
使用方法
控制器
<?php
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use MakerLabs\PagerBundle\Pager;
use MakerLabs\PagerBundle\Adapter\ArrayAdapter;
class ExampleController extends Controller
{
/**
*
* @Route("/example/{page}", defaults={"page"=1}, name="example_route")
* @Template()
*/
public function exampleAction($page)
{
$array = range(1, 100);
$adapter = new ArrayAdapter($array);
$pager = new Pager($adapter, array('page' => $page, 'limit' => 25));
return array('pager' => $pager);
}
}
Twig模板
{% if pager.isPaginable %}
{{ paginate(pager, 'example_route') }}
{% endif %}
{% for item in pager.getResults %}
<p>{{ item }}</p>
{% endfor %}
PHP模板
<?php if ($pager->isPaginable()): ?>
<?php echo $view['pager']->paginate($pager, 'example_route') ?>
<?php endif; ?>
<?php foreach ($pager->getResults() as $item): ?>
<p><?php echo $item ?></p>
<?php endforeach; ?>
默认CSS样式
有两个默认的CSS样式位于web/bundles/makerlabspager/css/中(clean.css和round.css)。您必须手动将它们包含在布局模板中。
适配器
ArrayAdapter
<?php
use MakerLabs\PagerBundle\Adapter\ArrayAdapter;
/* ... */
$adapter = new ArrayAdapter($your_array);
DoctrineOrmAdapter
<?php
use MakerLabs\PagerBundle\Adapter\DoctrineOrmAdapter;
/* ... */
$em = $this->getDoctrine()->getEntityManager();
$qb = $em->getRepository('ExampleEntity')->createQueryBuilder('f');
$adapter = new DoctrineOrmAdapter($qb);
定制
向翻页链接传递额外参数
您可以传递尽可能多的额外参数。例如,让我们修改我们的路由example_route并传递一个额外的{type}参数
@Route("/example/{page}/{type}", defaults={"page"=1}, name="example_route")
Twig模板
{{ paginate(pager, 'example_route', {'type': 'long'}) }}
PHP模板
<?php echo $view['pager']->paginate($pager, 'example_route', array('type': 'long')) ?>
更改默认的'page'参数名称
例如,让我们修改我们的路由example_route并将默认的{page}参数更改为{offset}
@Route("/example/{offset}", defaults={"offset"=1}, name="example_route")
Twig模板
{{ paginate(pager, 'example_route', {'_page': 'offset'}) }}
PHP模板
<?php echo $view['pager']->paginate($pager, 'example_route', array('_page': 'offset')) ?>
修改默认的渲染模板
有两个默认的渲染模板位于PagerBundle/Resources/views/Pager
- Twig: paginate.html.twig
- PHP: paginage.html.php
如果您想自定义它们的HTML,只需将其中一个复制到/app/Resources/MakerLabsPagerBundle/views/Pager
或者,您可以将您模板的名称(以bundle:section:template.format.engine格式)传递给paginate辅助函数
Twig模板
{{ paginate(pager, 'example_route', {}, 'ExampleBundle:Example:name.html.twig') }}
PHP模板
<?php echo $view['pager']->paginate($pager, 'example_route', array(), 'ExampleBundle:Example:name.html.php') ?>