Table of Contents
redirect()
is one of the most used and popular helper functions. This function redirects users to different URLs of the website. By using this method, we can redirect the user to pages with or without data.
Redirect to a Different URL
This is the most and simplest form in which the redirect method is used. We can redirect a user to the homepage by simply using the method below:
return redirect('/');
Users can also pass parameters inside the redirect method. The parameters given in the method will be added to the URL of the base application.
return redirect('contact');
Likewise, users can also pass more parameters:
return redirect('user/profile');
back() in Laravel
If the user wants to perform some sort of task and redirect back to the same page then the user can use back()
. This method is also really helpful.
return redirect()->back();
Redirect to Route
Users can also name the routes in the application for consistency. Some users call named routes instead of using URLs. Let’s see an example to make this concept clear.
return redirect()->route('profile.index');
We can also pass the second parameter in route() in the form of an array. Let’s see an example of a parameterized route.
Route::get('post/{id}', 'PostController@edit')-name('post.edit');
We can write the above above in simpler form which is here below:
return redirect()->route('post.edit', ['id' => $post->id]);
If the parameter is single then the redirect method can be written as:
return redirect()->route('post.edit', $post->id);
Named routes are of great help because if the user wants to change the URL, the user doesn’t have to worry about updating redirects.
Redirecting with Data
Laravel has inbuilt methods for sending the data during redirection i.e. with()
and withInput()
.
First, let’s see an example of with method:
return redirect()->back()->with('success', 'Post saved successfully.');
Basically what the above code does is, it directs the user to the previous location with a value having a key success
in it. The data received can be retrieved from the controller or other pages.
session('success');
You can also pass multiple data in with()
like shown below:
$response = [
'success' => 'Profile updated successfully.',
'profile_id' => $profile->id,
];
return redirect()->back()->with($response);
Now, let’s discuss about withInput()
. If the user is redirecting after some sort of form submission then the withInput()
method is used.
This method doesn’t take parameters instead of that it stores the values of form in session. Users can access those data by using the old($key). The user has to provide the specified key to access the data.
Redirect to Controller
Users can redirect to a controller by simply using the action()
method.
return redirect()->action('PostController@edit);
Parameters can also be passed in action()
. Below is an example of that:
return response()->action('ProfileController@edit', ['id' => $profile->id]);