0

まず、ユーザーが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 のように) で定義されたパラメーターであり、コントローラーではないと考えられます。そのため、「プロファイル」アクションにリダイレクトされます。

4

1 に答える 1

0

URL/my-nameはデフォルト ルートと一致します。以来:

  1. ルーターは、指定された順序でルートを照合しようとします。
  2. デフォルトルートは、独自の名前付き「プロファイル」ルートの前に追加されます

「デフォルト」ルートは使用されるルートです。

解決策は、最も具体的なものから最も一般的なものへとルートを定義することです。

したがって、あなたの場合、(ブートストラップ中に)デフォルトルートを削除し、名前付きの「プロファイル」ルートを追加してから、デフォルトルートを追加し直します。

/contact補足として: 'profile' ルートを定義した場合、 などの静的ページの URL が必要な場合は、'profile' ルートの前に/about定義されたカスタム ルートを使用する必要があります。 profile' ルートは、それらと照合してリダイレクトする機会がありません。

アップデート

@TimFountain が以下で私に思い出させたように、ルートは逆順で照合されるため、上記の特定の推奨事項は実際には正しくありません。しかし、明らかに順序が問題でした。

于 2013-02-14T06:23:28.323 に答える