2012-02-28 6 views
1

Zend Frameworkでワイルドカードや正規表現を使用してホスト名に一致するルータを作成することはできますか?Zend Frameworkのホスト名と正規表現ベースのルート

私はこのような何かを達成したい場合は、ホスト名

$externalHostname = new Zend_Controller_Router_Route_Hostname(
     'ext.mysite.com', array(
      'module'=> 'external', 
    )); 

しかし、何に基づいて一致するルートを作成することができます。

$externalHostname = new Zend_Controller_Router_Route_Hostname(
     'ext.*', array(
      'module'=> 'external', 
    )); 

どこで始まる任意のホスト名を「EXT。」そう

  • ext.mysite.com
  • ext.test.mysite.com

は両方とも一致し、ホスト名を持っているどのように多くのサブドメインレベルとは無関係に、「外部」モジュールにルーティングされます。

どのように達成できますか?

答えて

0

これはZend_Controller_Router_Route_Hostnameでは実現できません。 限定された数のサブドメインレベル(2〜4と言う)と一致させることを意図していた場合、それは機能している可能性があります。この場合、それぞれの場合に複数のHostnameルートを追加します。

無制限 - 私はそうは思わない。

0

Zend Routerは何をしていますか?

答え:これは、基本的にフロントコントローラに現在のモジュール/コントローラ/アクションが設定されていることを通知します。そして、FrontコントローラーはZend DispatcherにmoduleFolder/controllerFolderに行き、actionMethodを実行します。

これで、上記の状態を確認して、ルータを手動で設定できます。

ここで、このルータを確認して設定する必要がありますか?

解決策の1つは:public/index.phpファイルではプラグイン$ frontController-> registerPlugin( "my_router")のように登録でき、my_routerは "Zend_Controller_Plugin_Abstract"を拡張する必要があります。このmy_routerクラスコンストラクタの内部では、独自のルータを設定できます。

私は、Zend Frameworkの基本的な流れをチェックするだけです(要求をするときにzendフレームワーク内部で何が起こるのですか)。

関連する問題