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