Zend framework2 zend2路由分页器和模块

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 Framework 2路由器对象有问题。我试图在quickstart路由机制示例中实现
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都是可选的,并且都将匹配整数。这意味着正则表达式将不知道它匹配了哪个,它不够唯一