Difference entre forward et redirect

741 views
Skip to first unread message

ghaliano

unread,
May 23, 2008, 2:57:05 AM5/23/08
to 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

unread,
May 23, 2008, 3:07:39 AM5/23/08
to 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

unread,
May 23, 2008, 3:21:19 AM5/23/08
to 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

unread,
May 23, 2008, 3:52:28 AM5/23/08
to 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.
Reply all
Reply to author
Forward
0 new messages