使用Zend_Controller_Router_Route在URL中解析参数

时间:2013-03-14 13:26:05

标签: zend-framework

在我的网站上,我需要以这种方式获取页面的URL:/category/page4,因此传递到控制器的参数是单词“page”之后的数字。我设法使用以下方式获取URL:/category/page/4(带有额外的斜杠)使用此代码:

$router->addRoute('categoryPages', new Zend_Controller_Router_Route(
    '/category/page/:page',
     array(
        'controller' => 'caegory',
        'action' => 'index'
    ),
    array(
        'page' => '\d+'
    )
));

我希望像/category/page4这样的网址具有以下对此代码的修改:

// Simply removed one slash
'/category/page:page'

但是,此代码不会创建我需要的路由。我的错是什么?

1 个答案:

答案 0 :(得分:1)

您无法使用Zend_Controller_Router_Route执行此操作,命名变量必须与url分隔符(斜杠)或路径的开头/结尾相邻。

相反,您可以将其作为正则表达式路径:

$router->addRoute('categoryPages', new Zend_Controller_Router_Route_Regex(
    'category/page(\d+)',
     array(
        'controller' => 'caegory',
        'action' => 'index'
    ),
    array(
        1 => 'page'
    ),
    'category/page%s'
));