得到当前控制器

时间:2010-12-03 12:16:20

标签: php zend-framework front-controller

在我希望到达当前控制器的函数中:

$front = Zend_Controller_Front::getInstance();

这只给出了一个处理程序,但不是当前的控制器。

我将代码从函数更改为控制器内部。 并问他们的起源是我从getInstance得到的处理程序和这个

var_dump(get_class($front), get_class($this));

我明白了:

string 'Zend_Controller_Front' (length=21)
string 'IndexController' (length=15)

如何联系真正发起的前端控制器?

我不能作为参数传递,因为这个函数被使用了数万亿次。

2 个答案:

答案 0 :(得分:7)

Zend_Controller_Front::getInstance()->getRequest()->getControllerName();

答案 1 :(得分:1)

可能的:

$front = Zend_Controller_Front::getInstance()
$request = $front->getRequest();
$module = ucfirst($request->getModuleName());
$controller = ucfirst($request->getControllerName());

$instance = new $module . '_' . $controller . 'Controller';

In Action Helper:

$instance = $this->getActionController();

但是,这可能意味着你的架构出了问题 您应该将所需的公共代码移动到操作助手,服务或模型。