Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour tout le monde,
Bein mon problème persiste encore, j'ai désactivé le viewrender et je veux afficher une vue qui se trouve à un emplacement donnée.
du style: j'ai une vue se trouvant dans /view/nimporte.phtml
et je suis dans le controller indexController. Comment faire ça?
Hors ligne
Bonjour,
Si tu es dans IndexController, et dans l'action indexAction, tu peux utiliser n'importe quelle vue du répertoire .../views/scripts/index/*.phtml avec le code :
$this->_helper->viewRenderer->setRender('myview');
Sinon tu peux faire ton traitement et renvoyer sur une autre action avec :
$this->_forward("myaction","mycontroller");
A+, Philippe
Hors ligne
Merci philippe pour la réponse, en fait j'avait vu ça avant mais supposons que dans l'action vers laquelle je froward, y'a un message que j'écris et que je ne veux pas qu'il s'affiche.
Autrement dis:
.......indexController{
public function myActionAction()
{
$this->view->message="Salut";
$this->render();
}
}
et dans l'action qui se trouve dans un autre controlleur myControllerControlleur
public function myAction2Action()
{
$this->view->erreur="Erreur";
$this->_forward("index","myAction");
}
Si je fais ca, j'aurais un message qui s'affiche qui est "Salut".
Bon, je suis un peu débutant avec la version 1, je n'y touché qu'à la version 0.2.0 et y'avait une possibilité d'appelé directement la vue sans passer par une action.
Est ce que c'est possible?
Hors ligne
Effectivement, si tu ne veux pas passer par une autre action, tu peux redéfinir le comportement du viewRenderer en lui disant de ne pas mettre le répertoire du controlleur dans la vue que tu utilises :
ça donne un truc du genre :
$this->_helper->viewRenderer->setNoController(true);
dans ce cas, l'emplacement de ta vue, au lieu de suivre la convention : ":controller/:action.:suffix", elle suit la convention ":action.:suffix".
donc tu peux avoir une vue où tu veux avec un ligne du genre :
$this->_helper->viewRenderer->setRender('toto/myview');
Je n'ai pas testé, mais ça devrait marcher... J'avoue que personnellement je ne suis pas fan de l'approche ViewRenderer, j'ai fini par le désactiver...
A+, Philippe
Hors ligne
Merci, c'est tout ce que je voulais, pb résolu. Comme ça, on n'est pas limité et on peut faire ce qu'on veut, encore merci.
Hors ligne