kgilden / pager-bundle
v3.0.0
2016-08-02 13:21 UTC
Requires
- php: >=5.4.0
- kgilden/pager: ~1.0
- symfony/framework-bundle: ^2.0|^3.0
Requires (Dev)
- doctrine/orm: ^2.4
- phpunit/phpunit: ^4.8|^5.4
This package is auto-updated.
Last update: 2020-02-21 10:22:25 UTC
README
KGPagerBundle将kgilden/pager与Symfony框架集成。
注意!此包已被放弃
该组件已合并到基础库中。请在项目中直接使用kgilden/pager。
使用方法
默认情况下定义了一个分页器。通过kg_pager
服务ID访问它。当前页由page
查询参数推断。
<?php use KG\Pager\Adapter; use Symfony\Bundle\FrameworkBundle\Controller\Controller; class AcmeDemoController extends Controller { public function listPagedAction() { $qb = $this ->getDoctrine() ->getRepository('AppBundle:Product') ->createQueryBuilder('p') ; // 25 items per page is used by default. $itemsPerPage = 10; $page = $this->get('kg_pager')->paginate(Adapter::dql($qb), $itemsPerPage); return $this->render('App:Product:listPaged.html.twig', array( 'page' => $page )); } } ?>
当然,分页器也可以注入到任何服务中。
<?php use KG\Pager\Adapter; use KG\Pager\PagerInterface; class ExampleService { private $pager; public function __construct(PagerInterface $pager) { $this->pager = $pager; } public function doSomethingPaged() { $list = array('foo', 'bar', 'baz'); return $this->pager->paginate(Adapter::_array($list), 2); } } ?>
<service id="example_service" class="Acme\ExampleService"> <argument type="service" id="kg_pager" /> </service>
安装
使用composer进行安装
composer.phar require kgilden/pager-bundle
然后必须在内核中启用该组件
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new KG\Bundle\PagerBundle\KGPagerBundle(), ); } ?>
就这样!无需额外配置。您可以通过执行以下操作来确保组件正常运行
app/console container:debug | grep kg_pager
如果一切正常,它应该会打印出分页器服务。
配置
您可能希望可选地配置组件以定义多个分页器,每个分页器都有自己的设置。
kg_pager: default: foo # now `kg_pager` returns a pager named `foo` pagers: foo: per_page: 20 # how many items to have on a single page key: custom_page # the key used to infer the current page i.e. `http://exapmle.com?custom_page=2` merge: 10 # if less than 10 items are left on the last page, merge it with the previous page redirect: false # whether to redirect the user, if they requested an out of bounds page bar: ~ # pager with default settings
分页器以kg_pager.pager.%name%
的形式注册在服务容器中,默认分页器别名名为kg_pager
。
您可能还希望将默认分页器自动注入到您的实体仓库中。为此,请执行以下操作
-
让自定义仓库类实现 [
PagerAwareInterface
][Doctrine/PagerAwareInterface.php]; -
将类设置为默认仓库类,并在Doctrine配置中添加自定义工厂服务
// app/config/config.yml doctrine: orm: default_repository_class: 'Repository\Implementing\PagerAwareInterface' repository_factory: 'kg_pager.pager_aware_repository_factory'
贡献
如果您认为该组件可以改进(我100%确信它可以),只需发起一个pull request或编写一个issue。请在贡献时尽量遵循PSR编码风格。谢谢!
测试
只需在组件根目录中运行phpunit
以运行完整的测试套件。
许可证
此组件采用MIT许可证。请参阅组件中的完整许可证。
Resources/meta/LICENSE