首先,我想这样做,当用户导航到test.com/username时,它会将他带到test.com/account/profile/name/username,所以我添加了这条路线
$fc = Zend_Controller_Front::getInstance();
$router = $fc->getRouter();
$route = new Zend_Controller_Router_Route(
':name',
array('controller' => 'account', 'action' => 'profile'));
$router->addRoute('profile',$route);
它使它工作,但现在我使用以下链接
<a href="<?php echo $this->url(array(
'controller' =>'account',
'action'=>'update'), 'default',true);?>">Settings</a>
我猜它会“混乱”并使用上述路线,因为它不会转到test.com/account/update ..
我是否必须为更新操作添加其他路由?这是不是意味着我必须为与帐户控制器相关的所有操作添加新路由?
这里有什么帮助吗? :)
编辑:问题是该链接重定向到test.com/account/update,但它认为“帐户”是上面路由中定义的参数(如在test.com/name中),并且不是控制器,所以它将其重定向到'配置文件'动作。
答案 0 :(得分:0)
网址/my-name
与默认路由匹配。时间:
'默认'路线是被使用的路线。
解决方案是将您的路线定义从最具体到最常规。
因此,在您的情况下,我会尝试(在引导期间)删除默认路由,添加您的命名“配置文件”路由,然后添加回默认路由。
作为旁注:使用您定义的“个人资料”路线,如果您想拥有静态网页的网址,例如/contact
,/about
等,则必须使用自定义在您的“个人资料”路线之前定义的路线,以便“个人资料”路线无法与他们匹配并重定向。
<强>更新强>
由于@TimFountain在下面提醒我,路线在逆序中匹配,所以我上面的具体建议实际上并不正确。但显然秩序是问题。