kgilden/pager-bundle

此包已被放弃,不再维护。作者建议使用kgilden/pager包。

Symfony KGPagerBundle

安装: 8,224

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

v3.0.0 2016-08-02 13:21 UTC

This package is auto-updated.

Last update: 2020-02-21 10:22:25 UTC


README

Build Status

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