【问题标题】:Calling an action helper from a non-Controller class从非控制器类调用动作助手
【发布时间】:2011-05-27 02:25:36
【问题描述】:

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

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

我已经对代码进行了更改,以便 myAction 现在在类中调用方法 myActionWork() 并且该方法是起作用的。

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

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

class SomeClass {

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

【问题讨论】:

    标签: php zend-framework


    【解决方案1】:

    虽然这听起来有点乱,但您总是可以将帮助程序作为参数传递,例如

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

    【讨论】:

    • 如果有其他方法,我不想传递动作助手。
    • @sameold 为什么不呢?如果你要使用它,它就需要在那里。不过我已经想到了另一种方法,会更新我的答案。
    猜你喜欢
    • 1970-01-01
    • 2011-06-10
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多