Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-02-2010 23:43:52

FloK
Membre
Date d'inscription: 19-06-2009
Messages: 19

Utiliser 1 vue identique dans 2 controleurs différents

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 smile

Dernière modification par FloK (24-02-2010 23:50:48)

Hors ligne

 

#2 25-02-2010 03:17:22

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: Utiliser 1 vue identique dans 2 controleurs différents

Voilà mon cher ami, j'ai la solution pour toi :

Code:

// 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

 

#3 26-02-2010 00:47:31

FloK
Membre
Date d'inscription: 19-06-2009
Messages: 19

Re: Utiliser 1 vue identique dans 2 controleurs différents

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

 

#4 26-02-2010 01:41:24

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: Utiliser 1 vue identique dans 2 controleurs différents

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.

Code:

$this->view->setScriptPath('/dossier/de/scripts');
$this->_helper->viewRenderer->setScriptAction('form');

Dernière modification par probitaille (26-02-2010 01:42:12)

Hors ligne

 

#5 27-02-2010 18:22:55

FloK
Membre
Date d'inscription: 19-06-2009
Messages: 19

Re: Utiliser 1 vue identique dans 2 controleurs différents

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

 

#6 27-02-2010 20:46:53

psycho
Nouveau membre
Date d'inscription: 27-02-2010
Messages: 3
Site web

Re: Utiliser 1 vue identique dans 2 controleurs différents

salut
sa tombe bien je suis déja tombé dans ce genre de situation il suffit de faire comme suite.

Code:

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

 

#7 01-03-2010 16:04:36

throrin19
Membre
Date d'inscription: 01-03-2009
Messages: 318
Site web

Re: Utiliser 1 vue identique dans 2 controleurs différents

à 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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages