如何为路由器中的密钥指定动态默认值Zend Framework

时间:2009-05-27 16:01:36

标签: php zend-framework routing

此问题与this one

相关联

如何将类别部分的默认值设置为请求网址中的类别值?

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

换句话说,我需要在构建此路线时将值[aaa]作为类别的值。 [category]将始终存在值,否则将使用默认路径。

我的意思是:
如果我使用网址http://baseurl/category/mycat/index浏览网站 我将被路由到controller = index,action = index,category = mycat 但是,在我使用Zend_View :: url()帮助器的所有视图文件中,链接将指向:
http://baseurl/category/aaa/somthing/somthing(使用上面的确切路线)
虽然我实际上需要他们指出:
http://baseurl/category/mycat/somthing/somthing

这是因为类别的默认值在路径中写为常量,而不是从当前URL以某种方式获取。
我目前通过自己从URL中提取类别并将其作为默认值来解决此问题。

2 个答案:

答案 0 :(得分:0)

你的帖子中有问题吗? :)

如果我找对了你 - 你设置了默认的类别,如果你打电话就会使用它

$this->url(array(),'category');

但是当你使用

$this->url(array('category'=>'my-category'),'category');

它将返回 category / my-category / index / idnex 而不是 category / aaa / index / index

答案 1 :(得分:0)

如果您使用

$this->url(array(), 'category'); 

它应该有用。

但请记住:只要您坚持默认值,您将始终获得简单/类别链接,但在使用不同参数时,它应根据当前URI返回正确调整的URL。

即。如果URI是/ category / aaa / index / index则是$ this-> url(array(),'category');将返回/类别,如果URI是/ category / xxx / index / index则是$ this-> url(array(),'category');将返回/ category / xxx,如果URI是/ category / xxx / index / process则是$ this-> url(array(),'category');将返回/ category / xxx / index / process等。