4

在我想达到当前控制器的功能中:

$front = Zend_Controller_Front::getInstance();

这仅提供处理程序,但不提供当前控制器。

我将代码从函数更改为控制器内部。并询问了我从 getInstance 获得的处理程序和 this

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

我得到:

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

我怎样才能到达真正启动的前端控制器?

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

4

2 回答 2

7
Zend_Controller_Front::getInstance()->getRequest()->getControllerName();
于 2010-12-03T12:43:34.827 回答
1

可能与:

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

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

行动助手:

$instance = $this->getActionController();

但是,这可能意味着您的架构有问题。
您应该将您需要的通用代码移动到操作助手、服务或模型中。

于 2010-12-03T13:18:27.980 回答