4

サブドメイン名からテナント ID を取得する Zend Framework のマルチテナント アプリケーションに取り組んでいます (mod_rewrite -> index.php -> データベースと照合します)。

私の質問は、この変数 (テナント ID) をすべてのコントローラーで使用できるように設定するにはどうすればよいですか?

レオンティ

4

3 に答える 3

9

はい、Zend_Registryを使用できます。もう1つできることは、ディスパッチ前のコントローラープラグインを登録することです。これにより、コントローラーが受信する前に、tenantIDがリクエストパラメーターとして追加されます。

class YourApp_Plugin_IdWriter extends Zend_Controller_Plugin_Abstract {
    public function preDispatch(Zend_Controller_Request_Abstract $request) {
        $request->setParam('tenantID', ...);
    }
}

あなたはあなたのapplication.iniにプラグインを登録する必要があります:

resources.frontController.plugins.access = "YourApp_Plugin_IdWriter"
于 2009-11-27T07:08:41.177 に答える
1

Zend_Registry が適していると思います。 http://framework.zend.com/manual/en/zend.registry.html これは正しい方法ですか?

レオンティ

于 2009-11-27T04:27:02.393 に答える
0

変数を設定するだけのフロントコントローラープラグインはオーバーヘッドが大きすぎると思います。

より簡単な方法は、ベース アクション コントローラーを作成し、そこから他のすべてを継承することです。

class MyCompany_Controller_Action extends Zend_Controller_Action
{
    public function preDispatch()
    {
        parent::preDispatch();

        $this->getRequest()->setParam('tenantId', 42);
    }
}

すべてのコントローラーがこの基本コントローラーから継承されるという別の間接的な利点があるため、すべてから使用する必要がある共通のロジックを簡単に追加できます。

于 2009-12-01T16:50:06.917 に答える