get current controller

2019-03-21 10:34发布

问题:

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.

回答1:

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


回答2:

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.