如何在插件中获取控制器?

时间:2010-12-08 14:49:11

标签: php zend-framework

如何访问控制器插件中的动作控制器?

我需要使用preDispatch方法访问它。

class My_Controller_Plugin_MyPlugin extends Zend_Controller_Plugin_Abstract
{
  public function preDispatch(Zend_Controller_Request_Abstract $request)
  {
    $actionController = ?;
  }
}

2 个答案:

答案 0 :(得分:3)

我知道我已经迟到了两年,但是因为我在找到它的同时偶然发现了这一点,我想我还是会发帖。你在寻找的是:

//$module = $request->getModuleName(); // Not everyone uses modules.
$controller = $request->getControllerName();
$action = $request->getActionName();

警告......这只是给你请求的内容。如果您在发送后更改请求,则不再准确。

答案 1 :(得分:0)

这样的事情应该有效:

public function preDispatch(Zend_Controller_Request_Abstract $request)
  {
    $actionController = $this->getActionController();
  }

修改

实际上这在插件中不起作用(将在动作帮助器中工作)。

一些可能的解决方法:

  • 子类Zend_Controller_Action
  • 而是访问控制器,使用插件代理
  • 从控制器访问插件
  • 将插件逻辑移至动作助手
  • 将数据存储为bootstrap param
  • 将数据存储在注册表中