2009-05-29 15 views

Respuesta

35

En algunos casos, la ejecución de la acción termina mediante la solicitud de 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 desvía la llamada a otra acción:

$this->forward('otherModule', 'index'); 

Si los resultados de la acción en una dirección de la web:

$this->redirect('otherModule/index'); 
$this->redirect('http://www.google.com/'); 

La elección entre una redirección o un delantero es a veces 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 final resultante.

Si la acción se llama desde un formulario enviado con method="post", siempre se 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, funciona el botón de la forma prevista, mostrando la forma y no una alerta que pregunta al usuario si quiere volver a presentar una solicitud POST.

+0

Gracias, en especial sobre el último punto. –

+0

Este es el texto original de [Docu Symfony] (http://www.symfony-project.org/book/1_0/06-Inside-the-Controller-Layer#chapter_06_sub_skipping_to_another_action), debe había nombrado al menos su fuente! @ e-satis – domi27

+0

¿Por qué me haces ping @ domi27? –

Cuestiones relacionadas