Zend Framework2 中的Repository仓库模式及分页应用

Zend Framework2 中的Repository仓库模式

Repository仓库模式是提供将多个、一批资源雷竞技苹果下载地址作为集合使用的一种雷竞技苹果下载地址使用模式,在对资源进行浏览、查询、搜索以及输出到页面时非常有用,符合人们的正常思维逻辑。

使用Repository模式对Entity管理的步骤:

1、仓库类的目录
在ZendFramework2中,Doctrine2的Repository类存放在模块的src/Entity/Repository目录下。

2、使用仓库进行分页
配置路由
在路由中添加路由参数page

在实体中指定仓库

/** @ORMEntity(repositoryClass="YourModuleEntityRepositoryYourRepository")
*/
class YourEntity {
}

在项目模块的src模块名 下创建目录 Paginator,添加Doctrine2分页适配器 Adapter.php,其内容如下:

<?php
namespace YouModulePaginator;

use DoctrineORMEntityRepository;
use ZendPaginatorAdapterAdapterInterface;
class Adapter implements AdapterInterface{
    protected  $repository;

    /**
     * @param EntityRepository $repository
     */
    function __construct($repository)
    {
        $this->repository = $repository;
    }

    /**
     * @param int $offset               Page offset
     * @param int $itemCountPerPage     Number of items per page
     * @return array
     */
    public function getItems($offset,$itemCountPerPage){
        return $this->repository->getItems($offset,$itemCountPerPage);
    }

    /**
     * @return int
     */
    public function count(){
        return $this->repository->count();
    }
}

在模块文件 module.php 中添加分页助手的工厂模式:

                    'YourModulePaginatorYouEntity'=>function($sm){
                        $enm = $sm->get('DoctrineORMEntityManager');
                        $YouEntityRepository = $enm->getRepository('YourModuleEntityYouEntity');
                        $adapter = new YourModulePaginatorAdapter($YourEntityRepository);
                        $page = $sm->get('application')
                            ->getMvcEvent()
                            ->getRouteMatch()
                            ->getParam('page');
                        $paginator = new Paginator($adapter);
                        $itemCountPerPage = 10;//每页项目数
                        $paginator->setCurrentPageNumber($page)
                            ->setItemCountPerPage($itemCountPerPage);
                        return $paginator;
                    }

添加分页翻页模板 viewmoduleNamepartialspaginator.phtml

修改控制器的action

发表评论

电子邮件地址不会被公开。 必填项已用*标注