通过 Zend 中的应用程序访问控制器操作


Accessing a controller action through out the application in Zend

我对Zend有点陌生,我想在整个应用程序中自动使用控制器操作,我对如何使用它没有明确的想法,想到了init()方法,操作助手等。

然后,不要简单地创建控制器操作,而是创建控制器操作助手。 在这里你可以找到更多关于它的信息

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());

回应评论.

这取决于你的"代码片段",如果你的代码片段不需要对模块、控制器、动作、基网址一无所知,那么你可以使用 Bootstrap init 函数

喜欢

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中,并在任何您喜欢的地方检索它

在引导程序内.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