Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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
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
Je pense ne pas comprendre, ou alors tu as juste les yeux trop prêt de ton code pour t'en apercevoir
Mais est-ce :
public function newAction() { $this->oldAction(); ... }
Hors ligne
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
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 :
public function newAction() { $this->view->action('oldAction', 'controllerName', null, array('format' => 'json')); ... }
Hors ligne
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
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
Hors ligne