Обычно вы устанавливаете маршруты, чтобы перенаправлять пользователей на правильное (по умолчанию) действие вместо действия индекса (читайте, как перенаправить с данного маршрута с помощью Zend_Router). Но вы можете делать все вручную, если вы действительно этого хотите (однако это называется «написание хакерского кода для достижения чего-то грязного») непосредственно из контроллера.
Измените ваш "скрипт просмотра", чтобы он отображался, затем вызовите метод действия ....
// inside your controller...
public function indexAction() {
$this->_helper->viewRenderer('foo'); // the name of the action to render instead
$this->fooAction(); // call foo action now
}
Если вы часто используете этот «трюк», возможно, вы можете написать базовый контроллер, который вы расширяете в своем приложении, который может просто иметь такой метод:
abstract class My_Controller_Action extends Zend_Controller_Action {
protected function _doAction($action) {
$method = $action . 'Action';
$this->_helper->viewRenderer($action);
return $this->$method(); // yes, this is valid PHP
}
}
Затем вызовите метод из вашего действия ...
class Default_Controller extends My_Controller_Action
public function indexAction() {
if ($someCondition) {
return $this->_doAction('foo');
}
// execute normal code here for index action
}
public function fooAction() {
// foo action goes here (you may even call _doAction() again...)
}
}
ПРИМЕЧАНИЕ : это не официальный способ сделать это, но является решением.