在Zend Framework中添加路由到路由器

时间:2009-05-27 14:46:01

标签: php zend-framework routing

我正在使用mod-rewrite路由器。

我正在尝试将路由添加到将转换以下网址的路由器:
baseurl / category / aaa / mycontroller / myaction / param / value

是:
控制器=
myController的 行动= myaction

- 参数 -

类别= AAA
param = value

我在我的bootstrap中使用以下(不工作),_front是frontController

$Router=$this->_front->getRouter();
$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*');
$Router->addRoute('category', $CategoryRoute);

当我使用Zend_View :: url()帮助程序时(无论是否给出新路由的名称),我得到的错误是抛出的路由器异常。
只有当我有baseurl / category / ....

时才抛出异常

我错过了什么?

我错过了什么:
由于url中有[category],因此使用的路由器是上面定义的路由器 当我使用url()帮助器时,我没有给它[category]赋值,因此url parts->失败中没有这个键的值。 给出默认值,使其有效。

4 个答案:

答案 0 :(得分:6)

您应该按照solomongaby的建议添加/ *。

如果未提供所有必需参数(即类别,控制器和操作),则需要指定默认值。

您可以按照以下方式执行此操作:

$Router=$this->_front->getRouter();

$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*',
    array(
        'controller' => 'index',
        'action'     => 'index',
        'category'   => null
    )
);
$Router->addRoute('category', $CategoryRoute);

答案 1 :(得分:2)

$Router=$this->_front->getRouter();
$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*');
$Router->addRoute('category', $CategoryRoute);

尝试添加一个开头来指定是否存在额外的参数

答案 2 :(得分:1)

请检查http://webhkp.wordpress.com/2012/01/01/zend-framework-custom-router/这可以解决您的问题。

用ini文件完成。我喜欢这样做

答案 3 :(得分:0)

您必须在创建路线时指定默认值(请参阅dcaunt的帖子)或在url view helper(类别,控制器和操作)中指定所有参数