Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between redirect and forward in Symfony?

I want to know the difference between :

$this->forward("module", "action");

And

$this->redirect("module/action");

My first guess is that one implies a new request while the other one not, but I'm not sure.

like image 694
e-satis Avatar asked May 29 '09 15:05

e-satis


People also ask

What is the difference between redirect and forward method?

Redirection is a type of response sent back to the browser to instruct it to fetch another page. The URL in the browser address bar will change here. Forwarding happens server-side, and the result of the forward action is returned to the browser.

What is the difference between forward and redirect in spring MVC?

redirect will respond with a 302 and the new URL in the Location header; the browser/client will then make another request to the new URL. forward happens entirely on a server side. The Servlet container forwards the same request to the target URL; the URL won't change in the browser.


1 Answers

In some cases, the action execution ends by requesting a new action execution. For instance, an action handling a form submission in a POST request usually redirects to another action after updating the database. Another example is an action alias: the index action is often a way to display a list, and actually forwards to a list action.

The action class provides two methods to execute another action:

If the action forwards the call to another action:

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

If the action results in a web redirection:

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

The choice between a redirect or a forward is sometimes tricky. To choose the best solution, keep in mind that a forward is internal to the application and transparent to the user. As far as the user is concerned, the displayed URL is the same as the one requested. In contrast, a redirect is a message to the user's browser, involving a new request from it and a change in the final resulting URL.

If the action is called from a submitted form with method="post", you should always do a redirect. The main advantage is that if the user refreshes the resulting page, the form will not be submitted again; in addition, the back button works as expected by displaying the form and not an alert asking the user if he wants to resubmit a POST request.

like image 175
Peter D Avatar answered Sep 24 '22 21:09

Peter D