此问题与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中提取类别并将其作为默认值来解决此问题。
答案 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等。