[英]Zend Framework: Router
那是我的两个路由器:
->addRoute('viewTextMaterial', new Zend_Controller_Router_Route(':mCat/:mCatSub/:mId/:mTitle', array('controller' => 'index', 'action' => 'viewtextmaterial')))
->addRoute('viewNews', new Zend_Controller_Router_Route(':nCat/:nId/:nTitle/:page', array('controller' => 'index', 'action' => 'viewnews')))
在index.phtml文件中,我添加以下内容:
<a href="<?= $this->url(array('mCat' => 'Test', 'mCatSub' => 'Test', 'mId' => 7, 'mTitle' => 'Test'), 'viewTextMaterial') ?>">Test</a>
经验值 用于viewnews URL:
<a href="<?= $this->url(array('nCat' => News, 'nId' => 5, 'nTitle' => Some title, 'page' => 1), 'viewNews') ?>">some text</a>
但是,为什么当我单击href时,它将我重定向到“ viewnews”?
根据我的经验(不是很好:))我认为当您在名称前面使用冒号时,在定义路由器时,例如
'/:mCat/:mCatSub/:mId/:mTitle',
array(
'controller' => 'index',
'action' => 'viewtextmaterial'
)
您告诉路由器要做的是将遵循上述格式的所有URL路由('/:mCat /:mCatSub /:mId /:mTitle'),然后路由到您在此处提到的控制器/操作。 例如。
someController /动作/ x / y
要么
anoCont / act / a / b
将被路由到相同的控制器/动作。
因此,在您的情况下,您正在定义两个具有相同选项的路由器(这会造成歧义),并且默认情况下,使用第二个定义的路由(从下至上匹配)。
你可以用这样的东西
'/test/:mCatSub/:mId/:mTitle',
array(
'controller' => 'index',
'action' => 'viewtextmaterial'
)
因此,以“ test”作为控制器(在url中)开头的所有内容现在都将路由到您所需的控制器/视图。
希望它能工作.. :)(如果不能,请赐教我:))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.