Laravel Redirect to Route from Controller

Smit Pipaliya
TechvBlogs
Published in
2 min readNov 11, 2022

Sep 04, 2022, Originally published at techvblogs.com ・2 min read

This article will teach us Laravel redirect from controller to route. We will see how to laravel redirects from the route name. I will explain through a simple example how to redirect the route in laravel controller.

You mostly need to redirect the route from the controller method in the laravel project. Laravel provides several ways to return redirect with route name in laravel. Here, you will see four ways to return a redirect to a specific route from the controller function.

Example Routes:

routes/web.php

<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserController;
use App\Http\Controllers\HomeController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('users', [UserController::class, 'index']);
Route::get('home', [HomeController::class, 'index'])->name("home");

Using redirect() with route()

App\Http\Controller\UserController:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$users = User::get();
return redirect()->route("home");
}
}

Using to_route()

App\Http\Controller\UserController:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$users = User::get();

return to_route("home");
}
}

Using redirect()

App\Http\Controller\UserController:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$users = User::get();

return redirect("home");
}
}

Using route() with Parameters

Here’s an example if you can pass the route parameters as the second argument to route():

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function show(User $user)
{
return \Redirect::route('home', [$user->id])->with('message', 'User id found.');
}
}

If it’s only one you also don’t need to write it as an array:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function show(User $user)
{
return \Redirect::route('home', $user->id)->with('message', 'User id found.');
}
}

In case your route has more parameters, or if it has only one, but you want to clearly specify which parameter has each value (for readability purposes), you can always do this:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function show(User $user)
{
return \Redirect::route('home', ['id'=>$user->id,'OTHER_PARAM'=>'XXX',...])->with('message', 'User id found.');
}
}

Thank you for reading this article.

--

--

Smit Pipaliya
TechvBlogs

I am Project Manager at ServerAvatar Cloud Technology.