質問

私は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日間です)とすぐに私ができるようにこれを受け入れるだろう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top