Como redirecionar para a rota do controlador Laravel

Neste tutorial, mostraremos como redirecionar para uma rota de um controlador Laravel. Esta é uma técnica simples, mas útil, que pode ser usada para enviar usuários para diferentes páginas em seu aplicativo.

Você precisa principalmente redirecionar a rota do método do controlador no projeto laravel. O Laravel fornece várias maneiras de retornar o redirecionamento com o nome da rota no laravel. Aqui, você verá quatro maneiras de retornar um redirecionamento para uma rota específica da função do controlador.

Rotas de exemplo:

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");

Usando redirect() com 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");
    }
}

Usando 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");
    }
}

Usando 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");
    }
}

Usando route() com parâmetros

Aqui está um exemplo se você pode passar os parâmetros de rota como o segundo argumento para 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.');
    }
}

Se for apenas um, você também não precisa escrevê-lo como uma matriz:

<?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.');
    }
}

Caso sua rota tenha mais parâmetros, ou se tiver apenas um, mas você deseja especificar claramente qual parâmetro tem cada valor (para fins de legibilidade), você sempre pode fazer isso:

<?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.');

    }
}

Feliz Codificação!!!

1.00 GEEK