从非Controller类调用操作助手

时间:2011-05-27 02:25:37

标签: php zend-framework

我有一个动作助手,我通常在控制器中调用它:

public function myAction(){
   //some work
   $this->_helper->someHelper();
   //some other work
}

我对代码进行了更改,以便myAction现在在类中调用方法myActionWork(),该方法就是这样做的。

public function myAction(){
   SomeClass::myActionWork();
}

myActionWork()方法是什么工作,所以我把3行放在那里。但是,这些行中的一行是对动作助手someHelper()的调用。那么我怎样才能在普通类中使用动作助手呢?我可以这样做还是可以解决这个问题?

class SomeClass {

    public static myActionWork()
    {
       //some work
       $this->_helper->someHelper();
       //some other work
    }       

1 个答案:

答案 0 :(得分:2)

虽然这听起来有点混乱,但你总是可以把助手作为参数传递,例如

class SomeClass {

    public static myActionWork(Zend_Controller_Action_Helper_SomeHelper $helper)
    {
       //some work
       $helper->someHelper();
       //some other work
    }

从你的帮手那里,拨打

SomeClass::myActionWork($this->getActionController()->getHelper('SomeHelper'));

更新

另一种方法是将所需帮助程序静态地从帮助程序代理中拉出,例如

$someHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('SomeHelper');