Quelle est la difference entre redirect et forward in Zend framework?
Quand utiliser la redirection et quand utiliser forward?
Quelle est la difference entre redirect et forward in Zend framework?
Quand utiliser la redirection et quand utiliser forward?
_forward()
seulement transmet le tout à un autre contrôleur de l'action, alors que _redirect()
envoie un en-tête, ce qui signifie que vous créez une nouvelle Requête HTTP et aller à travers l'ensemble du processus de répartition avec elle.
Par exemple, si vous appelez http://example.com/foo/bar vous souhaitez appeler l' foo
de contrôleur et d' bar
action. Si vous avez de l'avant à l'intérieur de l' bar
d'action à l' baz
d'action, par exemple dans la même requête, le navigateur serait toujours sur la même URL, alors que quand on fait une redirection, ZF serait de demander au navigateur de charger http://example.com/foo/baz.
Essentiellement, _forward()
ne
$request->setActionName($action)
->setDispatched(false);
alors qu' _redirect()
ne
$this->_helper->redirector->gotoUrl($url, $options);
J'ai l'habitude de faire des redirections quand je veux éviter de recharger une page qui en résulte dans l'affichage des données de formulaire.
Voir ces:
Vous utilisez _forward() pour les cas où vous voulez que l'URL reste la même - mais méfiez-vous, cela ne signifie quelle que soit la classe de contrôleur de base que vous utilisez est appelé deux fois.
Cela peut vous sembler évident ou trivial, mais si pas de garder à l'esprit, peuvent vraiment gâcher la conception de votre application, étant donné que la compréhension intuitive de l'écoulement est que l'on demande appelle une instance du contrôleur. E. g. cela signifie demande-portée singletons ont à être déclarés en tant que static
, ou _forward() va les briser.
Je suppose qu'une redirection renvoie un navigateur 301/302 au navigateur avec une nouvelle URL, tandis qu'un transfert "transfère simplement" la requête à une autre action du contrôleur en interne, mais conserve l'URL de la même manière, de sorte que le navigateur ne connaisse pas le contenu différent. .
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.