2011-01-27 5 views
0

デフォルトルートではなくカスタムルートに基づいてモジュールディレクトリを使用するプロジェクトがあります。システムは各モジュールのroutes.iniファイルをロードし、それらのルートをZend_Controller_Router_Rewriteルータに追加します。私はここで達成しようとしています何Zend Framework - ルータ_再書き込みチェーン?

protected function _initRoutes() { 
     $this->bootstrap('FrontController'); 
     $front = $this->getResource('FrontController'); 

     $routes = Module_Loader::getInstance()->getRoutes(); 

     $front->setRouter($routes); 
     $front->getRouter()->removeDefaultRoutes(); 
    } 

は、URIに言語コードを付加することであるが、Router_Rewriteと連鎖することはできません。 私がルートを持っている:これはコアモジュールでホームページのコントローラのこのindexアクションへの直接の両方べきhttp://myhost.com/en/またはhttp://myhost.com/

[routes] 
;Index page 
routes.core_index_index.type = "Zend_Controller_Router_Route_Static" 
routes.core_index_index.route = "/" 
routes.core_index_index.defaults.module = "core" 
routes.core_index_index.defaults.controller = "index" 
routes.core_index_index.defaults.action = "index" 
routes.core_index_index.defaults.frontend = "true" 
routes.core_index_index.defaults.langKey = "route_index_page_description" 
routes.core_index_index.defaults.localization.enable = "true" 

は基本的に私は、URLが見えるようにしたいです。

これを上記のルーティングルールに "/([en /] *)"として追加することはできますが、このようなシステム関連機能の処理にモジュールが気にする必要はありません。

これは可能ですか?

ありがとうございました。

答えて

1

以下の設定を使用できます。

[routes] 
;Index page 
routes.core_index_index.route = ":language/:@controller/:@action/*" 
routes.core_index_index.defaults.controller = "index" 
routes.core_index_index.defaults.action = "index" 
routes.core_index_index.reqs.language= "[a-z]{2}" 
routes.core_index_index.defaults.frontend = "true" 
routes.core_index_index.defaults.langKey = "route_index_page_description" 
routes.core_index_index.defaults.localization.enable = "true" 

このルートを使用するたびにパラメータ 'language'を設定する必要があります。 あなたはこのような「言語」のデフォルト値を設定することができ、物事を簡単にするために:それは動作しますが、私はそれがトリックを行いますとは思わないようYarsonは、この1つは見え

Zend_Controller_Front::getInstance()->getRouter()->setGlobalParam('language', 'en'); 
+0

感謝。私は追加することを防ぐための解決策を探しているので、システム内にあるすべてのルートに言語を追加します。 setGlobalParamは問題ありませんが、私のルートはかなりあります。すべてのルートにシンプルなグローバルソリューションがありますか? – Maverick

+0

これは私の経験から最も簡単な方法です。言語パラメータを指定しないでルートを追加したい場合もあるので、このソリューションは柔軟性があるため完全に機能します。弊社のウェブサイトに90以上のルートがあり、そのほとんどに言語が含まれており、ローカライズされています(10言語)。 – yarson

関連する問題