0

我对 Zend 有点陌生,我想在整个应用程序中自动使用控制器动作,我不清楚如何使用它,考虑过 init() 方法、动作助手等。

4

1 回答 1

0

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

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 一无所知,那么您可以使用 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 中并在您喜欢的任何地方检索它

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 回答