get current controller

2019-03-21 10:16发布

in a function I want to reach current controller:

$front = Zend_Controller_Front::getInstance();

this only gives a handler but not current controller.

I changed the code from function to inside of controller. and asked their origins both the handler I got from getInstance and this

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

I get:

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

How can I reach real initiated front controller?

I cant pass as a parameter, because this function is used trillion times.

2条回答
时光不老,我们不散
2楼-- · 2019-03-21 10:42
Zend_Controller_Front::getInstance()->getRequest()->getControllerName();
查看更多
做自己的国王
3楼-- · 2019-03-21 10:43

Possible with:

$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();

But, this probably means that's something wrong with your architecture.
You should move the common code you need to action helper, service or model.

查看更多
登录 后发表回答