在我希望到达当前控制器的函数中:
$front = Zend_Controller_Front::getInstance();
这只给出了一个处理程序,但不是当前的控制器。
我将代码从函数更改为控制器内部。 并问他们的起源是我从getInstance得到的处理程序和这个
var_dump(get_class($front), get_class($this));
我明白了:
string 'Zend_Controller_Front' (length=21)
string 'IndexController' (length=15)
如何联系真正发起的前端控制器?
我不能作为参数传递,因为这个函数被使用了数万亿次。
答案 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();
但是,这可能意味着你的架构出了问题 您应该将所需的公共代码移动到操作助手,服务或模型。