Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 06-07-2008 22:43:25

exotux
Membre
Lieu: Toulouse
Date d'inscription: 02-09-2007
Messages: 16
Site web

[RESOLU] ZF 1.5 - Zend_Controller methodes init() et _forward()

Bonsoir,

Un nouveau problème smile

L'action index qui est appelée par défaut dans mon controller n'as pas vraiment de signification (sémantiquement parlant). Du coup, je souhaite que lorsque cette action est appelée, elle redirige sur une action liste. J'utilise donc dans la méthode indexAction() la méthode _forward('liste').

Le problème c'est que le méthode init() est visiblement rappelée et génère une erreur indiquant que le context 'text' existe déjà. En mettant un condition dans init() tout fonctionne mais n'y a-t-il pas mieux ?

Code:

<?php
class IndexController extends Zend_Controller_Action 
{
    public function init()
    {
        $contextSwitch = $this->_helper->getHelper('contextSwitch');
        
        if ( null === $contextSwitch->getContext('text') ) {
            $contextSwitch->addContext('text', array(
                'suffix' => 'text'
            ));
            $contextSwitch->addActionContext('ajax','text')->initContext();
        }
        
    } //eo init();
    

    public function indexAction()
    {
        $this->_forward('liste'); 
        
    } //eo listeAction();
        
        [...]
}

Dernière modification par exotux (11-07-2008 00:37:17)

Hors ligne

 

#2 07-07-2008 09:40:31

fte
Membre
Lieu: 06 13 83
Date d'inscription: 16-05-2008
Messages: 112
Site web

Re: [RESOLU] ZF 1.5 - Zend_Controller methodes init() et _forward()

Bonjour,

En essayant dans le predispatch ?

Code:

public function predispatch() {
/* coupé-collé de ton init() ici */
...

Plus d'infos : http://www.z-f.fr/forum/viewtopic.php?pid=1889

J'utilise :

Code:

    public $contexts= array (
                               'autocomplete'    => array ('json', 'xml'),
                            'rss'             => array ('xml')
                               );
 
   public function preDispatch()
   {
        $contextSwitch= $this->_helper->contextSwitch();
        $contextSwitch->setAutoJsonSerialization( false );
        $contextSwitch->initContext();
   }

Hors ligne

 

#3 07-07-2008 11:02:08

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: [RESOLU] ZF 1.5 - Zend_Controller methodes init() et _forward()

init() est appelée à la construction de la classe d'action.
Celle-ci est construite à chaque passage dans la boucle de dispatching, c'est donc le cas après un _forward (qui recrée un jeton pour une autre boucle).

Hors ligne

 

#4 08-07-2008 00:23:27

exotux
Membre
Lieu: Toulouse
Date d'inscription: 02-09-2007
Messages: 16
Site web

Re: [RESOLU] ZF 1.5 - Zend_Controller methodes init() et _forward()

Bonsoir,

Le fait de copier le contenu de ma méthode init() dans la méthode preDispatch() ne change rien. Predispatch est appelée avant chaque action, donc elle est appelée lors de l'appel de l'action index, puis lors de l'appel de l'action 'liste'. Je me retrouve dans la même situation qu'avec la méthode init(), j'ai une erreur indiquant que le context 'text' existe déjà. Enfin si j'ai bien tout compris big_smile

La méthode que m'indique "FTE" ne permet pas de créer mon propre "context" ou j'ai raté une étape. Je veux que ma vue affiche une simple chaîne de caractère. Je ne souhaite pas utiliser XML ou JSON. C'est pourquoi j'écris ceci :

Code:

$contextSwitch->addContext('text', array(
     'suffix' => 'text'
));
$contextSwitch->addActionContext('ajax','text')->initContext();

J'en déduis que la création d'un context ne doit pas ce faire dans un controller. Mais dans ce cas, ou puis-je le faire ? Il y a aussi la possibilité d'utiliser setContext() au lieu de addContext() qui va créer un nouveau context ou écraser l'ancien context si il existe déjà.

Qu'en pensez-vous ?

Dernière modification par exotux (08-07-2008 00:23:49)

Hors ligne

 

#5 08-07-2008 14:46:59

fte
Membre
Lieu: 06 13 83
Date d'inscription: 16-05-2008
Messages: 112
Site web

Re: [RESOLU] ZF 1.5 - Zend_Controller methodes init() et _forward()

Ok pour le predispatch vs init j'avais suvolé.

Une alternative au "context" à tester à la fin de ton action :

Code:

$response = $this->getResponse();
$response->setHeader('Content-Type', 'text/plain')
                  ->setBody( $tonTexte );

Dernière modification par fte (08-07-2008 14:47:16)

Hors ligne

 

#6 11-07-2008 00:36:52

exotux
Membre
Lieu: Toulouse
Date d'inscription: 02-09-2007
Messages: 16
Site web

Re: [RESOLU] ZF 1.5 - Zend_Controller methodes init() et _forward()

je vais regarder de ce coté, si cela ne marche je resterai sur l'option setContext() qui n'est p'tet pas si dramatique smile

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