Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je cherche à enchainer les 2 actions suivantes a savoir:
- 1 enregistrement en base (création d'abonnement)
- 1 recherche de cet abonnement (pour validation)
public function generateAction() { // Desactivation du rendu du layout et de la vue $this->_helper->layout()->disableLayout(); $this->_helper->viewRenderer->setNoRender(true); $this->_helper->actionStack('create', 'abonnement', 'abonnement', array( 'invoice' => '1045', 'forfait_id' => '1', 'id_user' => 92, 'pseudo' => 'test' 'paymentmethod' => 'TEST' ))); $this->_helper->actionStack('validate', 'abonnement', 'abonnement', array( 'invoice' => 1045 )); }
Or l'enregistrement se passe bien (1ere action stack) mais la recherche de cet abonnement (2e action stack) ne donne rien.
J'ai l'impression que les 2 actionStack ne sont pas traités séquentiellement ou alors de manière asynchrone cad que le 2e actionstack est exécuté avant la fin du traitement du 1er actionStack.
Je ne sais pas comment m'y prendre pour résoudre ce pb.
Quelqu'un peut-il m'aider ?
Dernière modification par booradley (18-11-2010 22:31:39)
Hors ligne
Il semble que les action stack soient exécutés dans l'ordre inverse de leur enchainement dans le code.
Si je veux faire un "insert" puis un "update" je dois faire
$this->_helper->actionStack('update', 'abonnement', 'abonnement', array( 'invoice' => 1045 )); $this->_helper->actionStack('insert', 'abonnement', 'abonnement', array( 'invoice' => '1045', 'forfait_id' => '1', 'id_user' => 92, 'pseudo' => 'test' 'paymentmethod' => 'TEST' )));
Pouvez vous me confirmer que c'est le déroulement normal des actionstack ?
Dernière modification par booradley (29-11-2010 14:13:07)
Hors ligne
J'ai moi-même observer ce même problème ce qui est assez étrange. Pourtant, une petite recherche ne m'a pas indiquer si c'était normal ou pas.
De plus, dans mon cas, les actionStack nécessitait beaucoup trop de ressource car ils agissaient comme une nouvelle requête sur le serveur.
En d'autres mots, 4 actionStack dans une même page équivalait à 5 appels au bootstrap, autoloader, etc...mon application était grandement ralentis. Depuis, j'essaie d'éviter les actionStack mais c'était probablement du à une mauvaise utilisation de ma part.
Hors ligne
Ce n'est pas un problème, c'est une pile d'actions (Stack => LIFO). Donc le dernier ajouté est le premier à être exécuté.
Hors ligne
Ok c'est une pile LIFO.
Mais comment l'utiliser dans le code ?
On a l'habitude de lire séquentiellement de haut en bas pour voir que qui s'exécute dans l'ordre.
Ca me gene de lire "a l'envers".
Y'a pas un autre moyen de faire ?
Hors ligne