redirectresponse - symfony 4 redirect
¿Cuál es la diferencia entre redirigir y reenviar en Symfony? (1)
Quiero saber la diferencia entre:
$this->forward("module", "action");
Y
$this->redirect("module/action");
Mi primera suposición es que una implica una nueva solicitud, mientras que la otra no, pero no estoy seguro.
En algunos casos, la ejecución de la acción finaliza solicitando una nueva ejecución de la acción. Por ejemplo, una acción que maneja un envío de formulario en una solicitud POST
generalmente redirige a otra acción después de actualizar la base de datos. Otro ejemplo es un alias de acción: la acción de índice es a menudo una forma de mostrar una lista, y en realidad reenvía a una acción de lista.
La clase de acción proporciona dos métodos para ejecutar otra acción:
Si la acción reenvía la llamada a otra acción:
$this->forward(''otherModule'', ''index'');
Si la acción resulta en una redirección web:
$this->redirect(''otherModule/index'');
$this->redirect(''http://www.google.com/'');
La elección entre una redirección o un reenvío a veces es difícil. Para elegir la mejor solución, tenga en cuenta que un reenvío es interno a la aplicación y transparente para el usuario. En lo que respecta al usuario, la URL mostrada es la misma que la solicitada. Por el contrario, una redirección es un mensaje para el navegador del usuario, que implica una nueva solicitud y un cambio en la URL resultante final.
Si se llama a la acción desde un formulario enviado con method="post"
, siempre debe hacer una redirección. La principal ventaja es que si el usuario actualiza la página resultante, el formulario no se enviará nuevamente; Además, el botón Atrás funciona como se esperaba al mostrar el formulario y no una alerta que pregunta al usuario si desea volver a enviar una solicitud POST
.