Différence entre $this->render et $this->redirect Symfony2
Quelle est la différence entre $this->render et $this->redirect. Est il possible que je peux passer des arguments avec $this->render comme dans je faire avec $this->redirect
return $this->render('MedicineUserBundle:User:home.html.twig', array(
'info' => $all,));
Puis-je faire quelque chose comme ceci :-
return $this->redirect($this->generateUrl('MedicineUserBundle_login', array(
'info' => $all,)));
Ou est-il un autre moyen que je peux transmettre des valeurs avec $this->redirection vers mon template twig fichier.
Et encore Une question, Comment puis-je changer l'url avec $this->redirect
, par exemple, Si je n'ai pas de transmettre toutes les valeurs de mon fichier de modèle que je peux faire comme mentionné ci-dessus que le rendu va me prendre pour une page comme localhost/monprojet/home mais $->this->redirect
va exécuter le contrôleur, mais l'url wil être le même que localhost/monprojet/. Est-il de toute façon je peux rediriger vers une autre url à l'aide de rediriger
OriginalL'auteur ScoRpion | 2012-02-25
Vous devez vous connecter pour publier un commentaire.
Redirect()
Effectue une redirection 301 ou 302 rediriger vers l'itinéraire spécifié/emplacement. Vous pouvez l'utiliser pour passer dans une URL complète, je crois. En utilisant cette méthode provoque l'URL de modifier dans la barre d'adresse.
En raison de Redirection utilise un simple 301/302-tête pour faire la redirection, il n'y a pas de moyen de passer les paramètres de modèle pour le nouvel emplacement à l'exception de l'URL comme vous le feriez pour n'importe quel contrôleur ou de l'URL.
Render()
Rend juste rend le fichier de modèle de vous le dire comme une réponse à la demande actuelle. Avec cela, vous pouvez passer votre tableau de paramètres du modèle normal.
Forward()
Il est aussi, qui transmet la demande à un autre contrôleur interne de l'envoi de ce contrôleurs de réponse à la réponse à la demande actuelle, sans aucune redirection. L'utilisation de cette méthode de ré-achemine la demande en interne sans modification de l'URL dans la barre d'adresse.
La clé de la différence entre le Rendu et la Redirection est que le Rendu est une partie de la Vue système et, par conséquent, possible de passer des paramètres à la tempaltes. Redirection est la partie du Contrôleur de système et ne sais rien à propos de la Vue. Vous pouvez passer des paramètres à la route de l'URL ou vous rediriger, mais l'emplacement cible doit alors faire quelque chose avec eux afin de les transmettre à la Vue.
Mise à jour de la réponse ci-dessus
OriginalL'auteur Hades