2010-11-23 17 views
3

モジュール固有のルートを作成する必要がありますが、モジュール名を明示的にルートに記述する必要はありません。今私は各モジュール(MODULE/configs/module.ini)のために別々の設定ファイルを持っており、モジュールのブートストラップでそれらのルートをZend Frameworkにプッシュします。 INIファイルにはルート情報が格納されていますが、ルートにはモジュール名が記載されています。例えばルートにモジュール名を指定しないでZend Frameworkのモジュール固有のルート

routes.contents.route = "内容/(.*)"
routes.contents.defaults.module =内容
routes.contents.defaults.controller =インデックス
routes.contents.defaults.action =インデックス
+その他の経路に関する詳細。

モジュール名(「コンテンツ」)が明示的にルートに記載されていることがわかります。私が望むのは、ルートでモジュール名の後ろの部分だけを言い、ルートの前にモジュール名の前に自動的に追加するということです。だから後でモジュールの名前を変更してCMSと言うと、私はすべてのルートを "CMS/xxxx"に変更しません。

答えて

0

指定した「経路」は、任意のものを指定できます。 Zend Frameworkがそれにマッチすれば、以下で設定されたデフォルトに基づいてルートを実行します。

resources.router.routes.products.regex = "somethingawesome/(.*)" 
resources.router.routes.products.defaults.module = "ModuleName" 
resources.router.routes.products.defaults.controller = "awesome" 
resources.router.routes.products.defaults.action = "cool" 

上記「ルート」のための正規表現一致を使用 - mysite.com/somethingawesome/whatever及び意志モジュールへのルートを:そこModuleNameを、コントローラAwesomeController.phpとcoolActionを(実行)

あなたがこの正規表現内でできる他の多くのマッチですが、文字列 'somethingawesome'は完全にあなた次第です。それは、あなたがURL内で一致させたいものと、それをどこに送るかについてです。

+0

私はそれを使用していますが、ほとんどのモジュールでは、ルートはモジュール名で始まります。 somethingawesome =モジュール名。だから私はちょうど "somethingawesome"の後のスラッシュの後にルートに入り、アプリケーションがモジュール名の前に自動的に追加する方法を探していた。私のモジュール名はrealestateであり、realestate /(.*)をmodule => realestate、controller => index、action => indexに渡し、getParamを使って(。*)値を取得したいとします。私は/(.*)をルート設定に追加したいだけなので、後でモジュールを "commercial"に改名すると、私はすべてのルートを変更するつもりはありません。 – Bryan

+0

"/ realestate"を "somethingelse"というモジュールに移動させたい場合は、それを '.module'設定行で変更するだけです。 "/ realestate"に設定されたルート正規表現はまったく変更する必要はありません。 "/ realestate"を "/"にして "somethingelse"にする場合は、両方の行を変更してください。 "/ realestate"を単に "/"として設定しても機能しないようにするには、デフォルトルートを無効にする必要があると思います。 –

+0

私はそれについて考えると、 "/(.*)"のルートはすべてを傍受し、他のすべてのモジュール/ルートは動作しません。ただ頭を上げる。 –

関連する問題