私はZend Framework 1.8/1.9のZend_Application
とリソースシステムを使用して、リソースの束を初期化しています。私は、要求されているモジュールに基づいて、特定の.iniファイルを読み込みたいだけです。たとえば、CMSモジュールが要求されている場合は "help.ini"を読み込みます( "/ cms")。問題は、Zend_Application_Resource_ResourceAbstract
サブクラスでリクエストオブジェクトにアクセスする方法がわかりません。ルートやモジュールに基づいてリソースを初期化する
私のリソースの1つ(CMSのカスタムルートを初期化するため)で、ハックな小さなutilを使用してモジュール(以下)を取得し、 "cms"モジュール名に一致するカスタムルートを追加します:
/**
* Grab the module name without a request instance
*
* @return string The module name
*/
public static function getModuleName()
{
$uri = ltrim($_SERVER["REQUEST_URI"], "/");
$module = substr($uri, 0, strpos($uri, "/"));
return $module;
}
$module = Typeoneerror_Util_Strings::getModuleName();
// -- only attach certain routes if using cms module
if ($module == Typeoneerror_Constants::CMS_MODULE)
{
...
私は、すなわち、要求オブジェクトがクラスに渡されるコントローラプラグインのように、これはより多くの "Zendの-Y" になりたい:
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$router = $this->__front->getRouter();
...
を
アイデア? Zend_Controller_Front
のdispatch()
メソッドが呼び出されるまでしかし、リクエストオブジェクトは、一般的に構築されていない
$bootstrap = $this->getBootstrap();
$bootstrap->bootstrap('frontController'); // make sure it's initialized
$fc = $bootstrap->getResource('frontController');
// Then I'm sure you know how to get the request from there.
:あなたのResourceAbstract
サブクラスからは、あなたがそうのようなフロントコントローラを取得することができます直接あなたの質問に答えるために
"ルータが要求のルーティングを終了した後、" routeShutdown()が呼び出されます。 " - まさに私が探していたもの!コントローラープラグインイベントの「ライフサイクル」について、もっと研究していたはずです。よくやった! – typeoneerror