2011-01-31 10 views
1

私のzendアプリケーションのブートストラップファイルで現在のモジュール名を取得する方法を知る必要があります。ページの読み込み時に、Webサービスに、ハッシュされたCookieとトークンを送信して現在のユーザー情報を取得する要求を出しています。問題は、私が3つのモジュールのうちの2つでこれを行う必要があるだけなので、例えば質問する必要があるということです。Zend Framework:ブートストラップのモジュール名

($ moduleNameの!== "filteredmodule"){// ん要求 }

感謝します。

答えて

5

ブートストラップは、アプリケーションを準備するためのものです。私はコントローラプラグイン(これは現在呼び出されているモジュールを取得するのに使うことができる)またはコントローラのinit()関数でこの種の呼び出しを行うことをお勧めします。

<?php 

final class YourApp_Controller_Plugin_YourPluginName extends Zend_Controller_Plugin_Abstract { 

    public function preDispatch(Zend_Controller_Request_Abstract $request) { 
     $module = $request->getModuleName(); //This is the module 

ドキュメント:

これは、コントローラプラグインを介して電流のモジュールを取得する方法であるアシュリーの答えについてhttp://framework.zend.com/manual/en/zend.controller.plugins.html

+0

このことについて私が知っているおかげで私の問題は、私はこの ます$ view->ナビゲーションをやっているということである() - > SETACL($この - > _ ACL) - > setRole(なZend_Registryは::( 'ロール' 取得)); がbootrstrapファイルにあります。私はそこにロールを設定し、コントローラプラグインはブートストラップリソースの後に実行するので、これの前に他のコードが実行されている必要があります。 私は何をすべきかは、ナビゲーションをプラグインにも移動することですか? – maxidela

+0

プラグインのロジックに応じて、プラグインでナビゲーションACLの役割を再定義することができます – Ashley

+0

Ashleyが正しいです、ルーティングが行われていないので、あなたのブートストラップのACL役割を少し早めるかもしれませんしかし、どのリソースが要求されているのか分かりません(ACLロジックを実行するのは難しいでしょう)。 –

0

一つのこと:あなたが

$module = $request->getModuleName(); 
を行いたい場合は

できるだけ早く

を呼び出し、routeShutdown()でそれを行います。

ドキュメントでは、Zend_Controller_Frontが登録されたルートに対する要求を評価するためにルータを呼び出す前に "routeStartup()が呼び出されます。ルータが要求のルーティングを完了した後にrouteShutdown()が呼び出されます。

したがって、ルートに指定されたモジュール、コントローラ、アクション、またはその他のパラメータなどのルータ依存のリクエストパラメータは、routeShutdown()以降の機能でアクセスできます。

関連する問題