質問
私は2つのカスタムルートを定義しました。 threads/:id/:name
ためthreads/tags/:tagName
及び他の一つの第一とが第1の競合Iの両方を有効にした場合、最初のブレークと扱いが(私はまた、純粋な正規表現のルートを使用してみました、ボトム参照):id
要件に従わない、アクションとして文字通り\d+
ためます。
アクション「1」が存在しないとできなかったん __callに捕捉された()
私はルートの順序を再配置しようとしたけど、私はその後、threads/tags/:tagName
doesntのは正しくtagNameををキャプチャすることを行います。
私はまた、デフォルトルートを無効にすることを試みたが、ルートはまだきちんとそれ以降は動作しません。
ここに私のルートinit関数です。
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'
)
)
);
解決
を解決しました。の
ああ、愚かな私。 addRouteの最初の引数は、一意の名前である必要がある、と私は仮定としてコントローラに直接対応していない。
、#zftalkにlutinvertをd__asmokaに感謝します。私は(最小値は2日間です)とすぐに私ができるようにこれを受け入れるだろう。
所属していません StackOverflow