Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 18-11-2010 22:30:51

booradley
Membre
Date d'inscription: 10-01-2009
Messages: 163

Enchainement de plusieurs actions

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)

Code:

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

 

#2 29-11-2010 14:11:53

booradley
Membre
Date d'inscription: 10-01-2009
Messages: 163

Re: Enchainement de plusieurs actions

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

Code:

 $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

 

#3 29-11-2010 17:50:26

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

Re: Enchainement de plusieurs actions

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

 

#4 29-11-2010 18:29:01

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: Enchainement de plusieurs actions

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

 

#5 30-11-2010 10:14:37

booradley
Membre
Date d'inscription: 10-01-2009
Messages: 163

Re: Enchainement de plusieurs actions

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

 

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