Zend framework2 zend2路由分页器和模块
我对Zend Framework 2路由器对象有问题。我试图在quickstart路由机制示例中实现Zend framework2 zend2路由分页器和模块,zend-framework2,zend-paginator,zend-controller-router,Zend Framework2,Zend Paginator,Zend Controller Router,我对Zend Framework 2路由器对象有问题。我试图在quickstart路由机制示例中实现Zend\Paginator,但没有成功。让我解释一下: 在快速入门之后,我以以下内容结束: 'album' => array( 'type' => 'Segment', 'options' => array( 'route' => '/album[/:action][/:id]', 'constraints' =>
Zend\Paginator
,但没有成功。让我解释一下:
在快速入门之后,我以以下内容结束:
'album' => array(
'type' => 'Segment',
'options' => array(
'route' => '/album[/:action][/:id]',
'constraints' => array(
'action' => '[a-z][a-z0-9\-]*',
'id' => '[0-9]+'
),
'defaults' => array(
'controller' => 'Album',
'action' => 'index'
)
)
)
/album[/:action][/id/:id][/:page]
当我尝试为我的浏览/索引页面实现分页器时,问题就出现了。考虑到这一点,我需要一个像/album[/:action][/:id][/:page]
这样的路由器,它无法工作,因为路由器将:page
变量分配给:id
。我删除了:id
部分,该部分以类似于/album[/:action][/:page]
的内容结尾,并在我的添加/编辑操作中调用
$matches = $this->getEvent()->getRouteMatch();
$id = $matches->getParam('page');
工作没有问题,但我喜欢保持记忆。因此,我的问题是:是否有可能在不创建重复路由器的情况下实现这一点,而只让分页器看起来像我喜欢的那样?我做了一些不正确的事情?它不够独特,例如一条路线:
/album[/:action][/:id][/:page]
id和page是可选的,两者都可以是整数
如果我们尝试匹配此路线:
/专辑/索引/99
99可以匹配id,但页面不存在,也可以匹配id不存在的页面。
没有办法知道哪个是哪个,所以这行不通
您可以添加一个标识符,如下所示:
'album' => array(
'type' => 'Segment',
'options' => array(
'route' => '/album[/:action][/:id]',
'constraints' => array(
'action' => '[a-z][a-z0-9\-]*',
'id' => '[0-9]+'
),
'defaults' => array(
'controller' => 'Album',
'action' => 'index'
)
)
)
/album[/:action][/id/:id][/:page]
因此,您将在其中添加一个文字,以确保您知道它是一个id:
/album/index/id/99 # :id = 99
或
/album/index/99#:page=99问题是您正在声明id和page都是可选的,并且都将匹配整数。这意味着正则表达式将不知道它匹配了哪个,它不够唯一