在我想要到达当前控制器的函数中:
$front = Zend_Controller_Front::getInstance();这只给出了一个处理程序,而不是当前的控制器。
我把代码从函数改成了控制器内部。我问了他们的来历,我从getInstance得到的处理程序和这个
var_dump(get_class($front), get_class($this));我得到了:
string 'Zend_Controller_Front' (length=21)
string 'IndexController' (length=15)我怎样才能联系到real启动的前端控制器?
我不能作为参数传递,因为这个函数被使用了万亿次。
发布于 2010-12-03 20:43:35
Zend_Controller_Front::getInstance()->getRequest()->getControllerName();发布于 2010-12-03 21:18:28
可通过以下方式实现:
$front = Zend_Controller_Front::getInstance()
$request = $front->getRequest();
$module = ucfirst($request->getModuleName());
$controller = ucfirst($request->getControllerName());
$instance = new $module . '_' . $controller . 'Controller';在Action Helper中:
$instance = $this->getActionController();但是,这可能意味着你的架构有问题。
您应该将所需的公共代码移动到操作助手、服务或模型中。
https://stackoverflow.com/questions/4345414
复制相似问题