получить текущий контроллер - PullRequest
4 голосов
/ 03 декабря 2010

в функции я хочу достичь текущего контроллера:

$front = Zend_Controller_Front::getInstance();

это дает только обработчик, но не текущий контроллер.

Я изменил код с функции на внутреннюю часть контроллера. и спросил их происхождение как обработчик, который я получил от getInstance, и это

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

Я получаю:

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

Как мне достичь реального инициированного фронт-контроллера?

Я не могу передать как параметр, потому что эта функция используется триллион раз.

Ответы [ 2 ]

7 голосов
/ 03 декабря 2010
Zend_Controller_Front::getInstance()->getRequest()->getControllerName();
1 голос
/ 03 декабря 2010

Возможно с:

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

Но , это, вероятно, означает, что что-то не так с вашей архитектурой.
Выследует переместить общий код, который вам нужен, в помощник действий, сервис или модель.

...