Difference entre forward et redirect

741 vues
Accéder directement au premier message non lu

ghaliano

non lue,
23 mai 2008, 02:57:0523/05/2008
à Symfony-fr
Bonjour ;

Est ce que quelq'un peut me dire la difference entre $this-
>forward(NomDuModule,NomDeL'action)
et $this->redirect(NomDuModule/NomDeL'action) et comment je peut
transferer un parametre avec forward comme le cas de redirect :

$this->redirect('users/edit?id_user='.$this-
>getRequestParameter('id_user'));

Cordiallement Ahmed

nautilebleu

non lue,
23 mai 2008, 03:07:3923/05/2008
à Symfony-fr
Redirect redirige complètement le serveur vers la page appelé et
produit donc une nouvelle requête complète. Du coup au niveau du
navigateur ce n'est pas la même URL qui est affichée.
Foward change simplement l'action en cours pour une autre. On reste
dans la même transaction HTTP. Pour le client, on est donc toujours
dans la même URL. Ce qui veut dire que tu n'as pas besoin de repasser
les paramètres à la nouvelle action si tu souhaites accéder aux
paramètres envoyés par le client. Par contre si dans ta première
action tu crées une variable et que tu veux avoir cette nouvelle
variable dans l'action du forward, le plus simple est de l'ajouter
dans les variables de la requête en faisant avant le forward :
$this->getRequest()->getParameterHolder()->set('ma_variable',
$valeur) ;
Dans l'action du forward, tu la récupéres en faisant:
$this->ma_variable = $this->getRequestParameter('ma_variable) ;

Nautile

ghaliano

non lue,
23 mai 2008, 03:21:1923/05/2008
à Symfony-fr
Vraiment merci pour cet eclairssicement claire et rapide ;)

Mais si je me permet un peut de curiosité comment il mette cet valeur
dans le request sans recharger la page ?? enfin comment Foward change
simplement l'action en cours pour une autre :)

Cordiallement Ahmed

nautilebleu

non lue,
23 mai 2008, 03:52:2823/05/2008
à Symfony-fr


On 23 mai, 09:21, ghaliano <ghaliano2...@gmail.com> wrote:
> Vraiment merci pour cet eclairssicement claire et rapide ;)
>
> Mais si je me permet un peut de curiosité comment il mette cet valeur
> dans le request sans recharger la page ??

je suppose que le parameterHolder est un wrapper pour la variable
$_SERVER. C'est une des supervariables de PHP qui stocke les
variables envoyées du serveur.

> enfin comment  Foward change
> simplement l'action en cours pour une autre :)

C'est un mécanisme interne de symfony. En fait, lorsque l'on traite
une action, symfony est capable de traiter plusieurs actions en une.
Par exemple, lorsqu'on envoie un mail avec symfony, on fait une "sous-
action" qui est envoyé à un serveur mail plutôt qu'au navigateur. Ceci
est permis par le fait que symfony ne gère pas une action, mais une
pile d'actions. Lors d'un forward, on ajoute juste une nouvelle action
après l'action en cours.
Répondre à tous
Répondre à l'auteur
Transférer
0 nouveau message