Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Voilà je vous expose mon pb:
J'ai 2 controleurs différents dans lesquels se trouvent 2 actions.
J'aimerais, pour ces 2 actions utiliser la même vue pour éviter de dupliquer le fichier .phtml.
Pour cela je dois donc envoyer mes variables directement à ma vue sans passer par le controleur pour éviter d'avoir à refaire des traitements, des requêtes qui fausseraient mes données.
Je ne vois pas comment procéder ni quoi utiliser. Pourriez-vous m'éclairer.
Par avance merci
ps: je ne suis pas très expérimenté en zf et connait peu de composant mais suis prêt à apprendre
Dernière modification par FloK (24-02-2010 23:50:48)
Hors ligne
Voilà mon cher ami, j'ai la solution pour toi :
// Bar controller class, foo module : class Foo_BarController extends Zend_Controller_Action { public function addAction() { // Rend 'bar/form.phtml' plutôt que 'bar/add.phtml' $this->_helper->viewRenderer('form'); } public function editAction() { // Rend 'bar/form.phtml' au lieu de 'bar/edit.phtml' $this->_helper->viewRenderer->setScriptAction('form'); } public function processAction() { // un peu de validation... if (!$valid) { // Rend 'bar/form.phtml' à la place de 'bar/process.phtml' $this->_helper->viewRenderer->setRender('form'); return; } // continue le processus... } }
Source doc officiel: http://framework.zend.com/manual/fr/zen … lpers.html
Hors ligne
J'ai essayé vite fait mais je n'arrive pas à lui spécifier un dossier de vue différent du controleur actuel...
Je continue à chercher mais si tu as la réponse je la veux bien.
Meric pour ton aide
Hors ligne
Je sais qu'il existe cette fonction qui permet de changer le chemin pour des scripts de vues mais je n'ai jamais testé, tu me donneras des nouvelles.
$this->view->setScriptPath('/dossier/de/scripts'); $this->_helper->viewRenderer->setScriptAction('form');
Dernière modification par probitaille (26-02-2010 01:42:12)
Hors ligne
j'arrive à ne pas avoir d'erreur en faisant appel à ma vue, mais j'ai l'impression qu'il ne prend pas le code html de la vue.
Car je n'obtiens aucun affichage de mes données.
Si quelqu'un à une idée.
merci d'avance
Hors ligne
salut
sa tombe bien je suis déja tombé dans ce genre de situation il suffit de faire comme suite.
class monController extends Zend_Controller_Action{ public monAction(){ // ici se trouve le code pour monAction. //on assigne la vue à [i]scripts/moncontroller/autreaction.phtml[/i] $this->render('autreaction', null , false); } public tonAction(){ // ici se trouve le code pour tonAction. //on assigne la vue à [i]scripts/autreaction.phtml[/i] vous l'avez surment remarquer le dernier argument qui est boolean determine si laction et dans le dossier vue du controller courant sinon c'est tous simplement dans le dossier [i]scripts[/i] $this->render('autreaction', null , true); } public autreAction(){ // ici se trouve le code pour autreAction. //ici un rendu vers une vue normal [i]scripts/moncontroller/autreaction.phtml[/i]. } }
Hors ligne
à savoir, le $this->render(); doit se mettre après les variables de vue sinon elles seront définies pour la vue de ton action en cours et non pour celle-ci.
Hors ligne
Pages: 1