zephyr/pager

symfony的翻页组件

dev-master / 2.2.x-dev 2013-06-18 22:09 UTC

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