So leiten Sie vom Laravel Controller zur Route um

In diesem Tutorial zeigen wir Ihnen, wie Sie von einem Laravel-Controller zu einer Route umleiten. Dies ist eine einfache, aber nützliche Technik, mit der Sie Benutzer zu verschiedenen Seiten Ihrer Anwendung weiterleiten können.

Meistens müssen Sie die Route von der Controller-Methode im Laravel-Projekt umleiten. Laravel bietet mehrere Möglichkeiten, eine Weiterleitung mit Routennamen in Laravel zurückzugeben. Hier sehen Sie vier Möglichkeiten, von der Controller-Funktion aus eine Umleitung auf eine bestimmte Route zurückzugeben.

Beispielrouten:

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

Verwenden von redirect() mit 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");
    }
}

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

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

Verwenden von route() mit Parametern

Hier ist ein Beispiel, wenn Sie die Routenparameter als zweites Argument übergeben können 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.');
    }
}

Wenn es nur eines ist, müssen Sie es auch nicht als Array schreiben:

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

Falls Ihre Route mehr oder nur einen Parameter hat, Sie aber (aus Gründen der Lesbarkeit) klar angeben möchten, welcher Parameter welche Werte hat, können Sie jederzeit Folgendes tun:

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

    }
}

Viel Spaß beim Codieren!!!

1.00 GEEK