Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-11-2009 17:43:00

Intiilapa
Membre
Date d'inscription: 03-02-2009
Messages: 95

[Zend_Controller] Enchainer deux actions

Bonjour,
je me demande comment on peut enchainer deux actions pour éviter de dupliquer du code. J'ai une action existante que je veux réutiliser en amont d'une nouvelle action que je souhaite créer. Il faudrait que je récupère les variables liées à la vue de la première action dans l'idéal big_smile

Je ne peux pas utiliser la méthode _forward(), à moins de créer une troisième action qui appelle l'ancienne action et la nouvelle. Avec l'actionStack, je ne vois pas trop à part quelque chose d'un peu porcin comme un plugin de controller qui modifie la pile du stack si on appelle la nouvelle méthode.
Comment gérez-vous ce genre de cas ?

Merci

Hors ligne

 

#2 23-11-2009 18:41:52

yvann
Membre
Date d'inscription: 24-07-2008
Messages: 81

Re: [Zend_Controller] Enchainer deux actions

Je pense ne pas comprendre, ou alors tu as juste les yeux trop prêt de ton code pour t'en apercevoir smile

Mais est-ce :

Code:

public function newAction() {
    $this->oldAction();
    ...
}

Hors ligne

 

#3 23-11-2009 19:01:59

Intiilapa
Membre
Date d'inscription: 03-02-2009
Messages: 95

Re: [Zend_Controller] Enchainer deux actions

yvann a écrit:

Je pense ne pas comprendre, ou alors tu as juste les yeux trop prêt de ton code pour t'en apercevoir smile

Je n'ai pas précisé que l'ancienne action se situe dans un contrôleur différent ^^

Il y a une ruse avec l'aide de vue action, mais bon c'est un usage détourné je pense :

Code:

public function newAction() {
    $this->view->action('oldAction', 'controllerName', null, array('format' => 'json'));
    ...
}

Hors ligne

 

#4 23-11-2009 20:17:51

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Zend_Controller] Enchainer deux actions

Forward est exactement ce qu'il faut pour enchainer des actions.

Hors ligne

 

#5 23-11-2009 23:02:51

Intiilapa
Membre
Date d'inscription: 03-02-2009
Messages: 95

Re: [Zend_Controller] Enchainer deux actions

Mr.MoOx a écrit:

Forward est exactement ce qu'il faut pour enchainer des actions.

Certes. Pour résumer, j'ai une action A qui est déjà utilisée. Je dois créer une action B dans un autre contrôleur qui reprend le code de l'action A, donc je me dis autant factoriser. La méthode A doit s'exécuter avant pour que B ait les informations pour le traitement supplémentaire.

Je cherche peut-être midi à 14h pour ne pas dupliquer du code, car les actions de contrôleur devraient être succinctes pour ne pas avoir le syndrome du «ugly controller». Pour ajouter forward, il faudrait que j'appelle la méthode A et non B en rajoutant un argument pour déclencher le forward pour ne pas provoquer des régressions sur les autres méthodes qui appellent A et qui n'ont besoin du traitement que de A. Quelque chose m'échappe ou est-ce bien cela ?

Hors ligne

 

#6 24-11-2009 09:35:00

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend_Controller] Enchainer deux actions

Perso, quand je lis ton dernier paragraphe, je me dis que tu as un défaut de conception.
Je ne pense pas qu'il soit bien qu'un contrôleur dépende d'un autre..

Pour info, si tu veux balader des données d'un endroit à un autre, tu peux utiliser Zend_Registry


----
Gruiiik !

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