1
我已經定義了2個自定義路由。一個用於threads/:id/:name
,另一個用於threads/tags/:tagName
但是第二個與第一個衝突,因爲如果我啓用兩個然後第一個休息並將:id
字面上看作是一個動作,而不是遵守\d+
要求(我也嘗試使用純正則表達式路由,請參見底部) 。Zend路由衝突
行動「1」不存在,並沒有 被困在__call()
我試圖路由的重新排列順序,但如果我這樣做,那麼threads/tags/:tagName
犯規正確捕捉標籤名。
我也嘗試禁用默認路由,但路由仍然不正常工作後。
這是我的路線初始化函數:
protected function _initRoutes() {
$fc = Zend_Controller_Front::getInstance();
$router = $fc->getRouter();
$router->addRoute(
'threads',
new Zend_Controller_Router_Route('threads/:id/:name',
array(
'controller' => 'threads',
'action' => 'thread',
),
array(
'id' => '\d+'
)
)
);
$router->addRoute(
'threads',
new Zend_Controller_Router_Route('threads/tags/:tagName',
array(
'controller' => 'threads',
'action' => 'tags',
),
array(
'tagName' => '[a-zA-Z]+'
)
)
);
}
我也使用正則表達式的純路徑嘗試,但沒有成功,很可能是因爲我沒有錯:
$router->addRoute(
'threads',
new Zend_Controller_Router_Route_Regex(
'threads/(\d+)/([a-zA-Z]+)',
array(
'controller' => 'threads',
'action' => 'thread',
),
array(
1 => 'tagName',
2 => 'name'
)
)
);