0

Zend ルーターの作成に関する限り、私は初心者です。フォームのすべてのリクエストをルーティングしたい

/:username to controller=>user and action=>profile. 問題は、どの :username がルーティングされるかをフィルタリングできるようにしたいということです。つまり、ルーティングされるユーザー名をフィルタリングしたいのです。

適用したい最も基本的で重要なフィルターは、:username が既存のコントローラー名と一致する場合、/user/profile にルーティングされるべきではないということです。

これについての助けをいただければ幸いです。ありがとう。

4

1 に答える 1

1

なりたい自分にたどり着くためのヒントをいくつか紹介します。

  1. ルートはスタックに集約されるため、LIFO (後入れ先出し) です。これは、最も優先度の高いルートを最後に定義する必要があることを意味します。この特定のシナリオでは、 /:username ルートを先にリストして、優先度を低くします。これにより、他の既存のルートが最初にルーティングされるようになります。
  2. どの :username がルーティングされるかを「フィルタリング」したいとおっしゃいました。ユーザー名の静的リストはありますか? その場合は、正規表現ルートを使用して (username1|username2|...) を実行できます。データベース経由でユーザー名を検索する場合は、データベースにクエリを実行するカスタム ルート クラスを作成する必要があります。
  3. または、単純にパターン ベースのルートを使用して、フロント コントローラー プラグインでフィルタリングを行うこともできます。

注: オプション #3 を使用する場合は、次の手順を開始する必要があります。

$router       = Zend_Controller_Front::getInstance()->getRouter();
$matchedRoute = $router->getCurrentRouteName();

ルート名に基づいてアクションを実行します。/:username ルートを定義するルート名でない場合は、無視します。一致する場合は、ユーザー名とフィルターを検索します。

于 2012-04-06T06:26:09.540 に答える