0

私はZendに少し慣れていません。アプリケーション全体でコントローラーアクションを自動的に使用したいのですが、その使用方法について明確な考えがなく、init()メソッド、アクションヘルパーなどについて考えました。

4

1 に答える 1

0

次に、単にコントローラーアクションを作成する代わりに、controllerActionHelperを作成します。ここであなたはそれについてもっと見つけることができます

http://framework.zend.com/manual/en/zend.controller.actionhelpers.html

My_Helper_Magic extends Zend_Controller_Action_Helper_Abstract
{

public function preDispach()
{
     //code inside here will run for entire application automatically
}

}

あなたのブートストラップで

Zend_Controller_Action_HelperBroker::addHelper(new My_Helper_Magic());

コメントに応えて。

それはあなたの「コードフラグメント」に依存します、あなたのコードフラグメントがモジュール、コントローラー、アクション、ベースURLについて何も知る必要がないなら、あなたはブートストラップ初期化関数を使うことができます

お気に入り

public function _initAlways()
{
//see how this function name is prefixed with _init hence it will be called by ZF //everytime. You can put your code fragment here 
//If your code fragment depends upon some stuff like baseurl then do action controller
// registration here instead 
 Zend_Controller_Action_HelperBroker::addHelper(new My_Helper_Magic());

}

コメントへの返信

オブジェクトの任意のインスタンスをZend_Registy内に保存し、好きな場所で取得できます

Bootstrap.phpの内部

public function _initSetup()
{
$object = new My_Custom_Object();
Zend_Registry::set('my_custom_object',$object);
}

後でビューまたはコントローラーで実行します

$myObject = Zend_Registry::get('my_custom_object');  //to access it
于 2012-04-25T10:11:53.390 に答える