0

我遇到了 Zend Framework 2 Router 对象的问题。我正在尝试实现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][/:page]行不通的,因为路由器将:pagevar 分配给:id. 我删除了:id以类似内容结尾的部分,/album[/:action][/:page]并在我的添加/编辑操作中调用

$matches = $this->getEvent()->getRouteMatch();
$id = $matches->getParam('page');

工作没有问题,但我喜欢事情保持记忆。所以我的问题是:是否有可能在不创建重复路由器的情况下仅让分页器看起来像我喜欢的那样来实现这一点?我做错了什么?

4

1 回答 1

1

它不够独特,以路线为例:

/album[/:action][/:id][/:page]

id 和 page 是可选的,都可以是整数

如果我们尝试匹配这条路线:

/专辑/索引/99

99 可以匹配 id,页面不存在,也可以匹配页面,id 不存在。没有办法知道哪个是哪个,所以这行不通。

您可以添加一个标识符,如下所示:

/album[/:action][/id/:id][/:page]

所以你会在那里有一个文字来确保你知道它是一个id:

/album/index/id/99 # :id = 99

或 /album/index/99 # :page = 99

于 2013-03-08T22:55:13.750 回答