zend framework里在某个控制器的某个action中怎么调用其他控制器的某个方法?

2024-12-22 14:21:03
推荐回答(2个)
回答1:

一个很简单解决办法就是引用这个controller,然后使用
$c = new ControllerName($this->getRequest(), $this->getResponse());
然后$c->functionName()就行了。

但是,对于action使用actionStack更好,不是action的话,亲,我建议你把它移到M层中。

回答2:

1、如果IndexController这一个类有调用的话,并且m1是独立方法可以使用 IndexController::m1();

2、改成继承:

class NewsController extends IndexController { //这里可以改成继承IndexController 这一个类
  function indexAction(){
   $m1 = $this->m1;//跟调用本类方法一样,因为是继承了类
   $this->view->m1 = $m1;
  }
}
3、global
class IndexController extends Zend_Controller_Action{
  function indexAction(){
   global $abc;
   $abc = &$this;//这里用引用,不是复制,所以不会很消耗资源

}
}

class NewsController extends Zend_Controller_Action{
  function indexAction() {
   global $abc;

   $m1 =$abc->m1;//这里
   $this->view->m1 = $m1;
  }
}