Habituellement, vous allez installer des routes pour rediriger vos utilisateurs vers l'action correcte (par défaut), au lieu de l'action d'index (lisez comment rediriger depuis un itinéraire donné en utilisant Zend_Router). Mais vous pouvez tout faire manuellement si vous voulez vraiment (mais cela s'appelle "écrire le code pirate pour réaliser quelque chose de sale") directement à partir du contrôleur.
Changer votre « script de vue » à rendre, appelez votre méthode d'action ....
// inside your controller...
public function indexAction() {
$this->_helper->viewRenderer('foo'); // the name of the action to render instead
$this->fooAction(); // call foo action now
}
Si vous avez tendance à utiliser ce « truc » souvent, peut-être vous pouvez écrire un contrôleur de base que vous étendre dans votre application, qui peut simplement avoir une méthode comme:
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
}
}
appeler ensuite la méthode de votre action ...
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...)
}
}
NOTE: ce n'est pas la manière officielle de le faire, mais est une solution.
Non merci, je veux rediriger du contrôleur, des itinéraires avant utilisés ... – ovitinho