zend2路由分页器和模块

时间:2013-03-08 22:10:31

标签: zend-framework2 zend-paginator zend-controller-router

我遇到了Zend Framework 2路由器对象的问题。我正在尝试将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] var分配给:page,因此我需要:id这样的路由器不起作用。我删除了以:id结尾的/album[/:action][/:page]部分,并在我的添加/编辑操作中调用

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

工作没有问题,但我喜欢保持记忆的东西。所以我的问题是:是否有可能实现这一点而不创建一个重复的路由器只为分页器看起来像我喜欢?我做错了什么?

1 个答案:

答案 0 :(得分: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