2012-04-05 9 views
0

Zendルータに関する記述は、初心者です。 私はフォームのすべてのリクエストをルーティングしたいと思っていますZend Routerでのフィルタリング要求

/:username => user => user => profile。 キャッチすることは、ユーザー名をルーティングするかどうかをフィルタできるようにすることです。 つまり、ユーザー名をフィルタリングしてルーティングします。

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

これに関するお手伝いをいただければ幸いです。おかげさまで ここで

答えて

1

は、あなたがなりたい場所にあなたを取得する必要がありますいくつかのヒントです:彼らはLIFO(うち最初の、の最後)になるよう

  1. ルートは、スタック上に集約されます。つまり、最優先のルートを最後に定義する必要があります。この特定のシナリオでは、/:usernameルートを先にリストして優先順位を低くします。これにより、既存の他のルートが最初にルーティングされるようになります。
  2. あなたは "フィルタリング"したいと述べた:ユーザー名がルーティングされます。あなたは静的なユーザー名のリストを持っていますか?もしそうなら、Regexルートとdo(username1 | username2 | ...)を使うことができます。データベース経由でユーザー名を検索する場合は、データベースを照会するカスタムルートクラスを作成する必要があります。
  3. また、パターンベースのルートを使用するだけで、フロントコントローラープラグインでフィルタリングを行うこともできます。

注:オプション#3で行く場合は、次のようにあなたが始める必要があります。

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

あなたはルート名に基づいた行動を取るだろう。 /:usernameルートを定義するルート名でない場合は、無視します。一致する場合は、ユーザ名とフィルタを調べます。

+0

参考までに、このZendcastsのエピソードもチェックしてみてください。http://www.zendcasts.com/creating-custom-zend_controller-routes-2/2009/01/ –

関連する問題