Tutorial · Laravel · 25.07.2024

Tutorial: Die beste Möglichkeit, Routen in Laravel 11 anzulegen und zu nutzen

Laravel ist ein leistungsstarkes PHP-Framework, das für seine einfache Handhabung und elegante Syntax bekannt ist. Eine der grundlegenden Funktionen von Laravel...

Voraussetzungen

Grundkenntnisse in PHP und Laravel Eine funktionierende Laravel 11-Installation Grundlegendes Verständnis von MVC (Model-View-Controller) Architekturen

1. Grundlagen des Routings in Laravel

Erstellen einer einfachen Route Die einfachste Art, eine Route zu erstellen, ist die Definition in der routes/web.php Datei:
php
use Illuminate\Support\Facades\Route;

Route::get('/hello', function () {
    return 'Hallo Welt!';
});
Diese Route antwortet auf HTTP GET-Anfragen an /hello und gibt den Text "Hallo Welt!" zurück.

Verwendung von Controllern

Für komplexere Anwendungen ist es ratsam, Controller zu verwenden. Hier ist ein Beispiel, wie man eine Route einem Controller zuweist:

2. Definieren Sie eine Methode im Controller:

shell
php artisan make:controller GreetingController
php
// app/Http/Controllers/GreetingController.php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class GreetingController extends Controller
{
    public function hello()
    {
        return 'Hallo aus dem Controller!';
    }
}
Weisen Sie die Route der Controller-Methode zu:
php
// routes/web.php
use App\Http\Controllers\GreetingController;

Route::get('/hello', [GreetingController::class, 'hello']);

2. Route-Parameter und reguläre Ausdrücke

Dynamische Route-Parameter Laravel ermöglicht es, dynamische Parameter in Routen zu verwenden:
php
Route::get('/user/{id}', function ($id) {
    return 'User '.$id;
});
Hier wird {id} als Platzhalter verwendet, der dynamisch durch den tatsächlichen Wert in der URL ersetzt wird.

Reguläre Ausdrücke für Parameter

Sie können auch reguläre Ausdrücke verwenden, um die Parameter zu validieren:
php
Route::get('/user/{name}', function ($name) {
    return 'Hallo '.$name;
})->where('name', '[A-Za-z]+');
Dieses Beispiel stellt sicher, dass der Parameter name nur Buchstaben enthält.

3. Benannte Routen

Benannte Routen erleichtern die Verwaltung und Generierung von URLs. Sie können eine Route benennen, indem Sie die name Methode verwenden:
php
Route::get('/profile', function () {
    // ...
})->name('profile');
Später können Sie die benannte Route verwenden, um URLs zu generieren:
php
$url = route('profile');

4. Middleware in Routen

Middleware kann verwendet werden, um Routen zu schützen oder zu modifizieren. Zum Beispiel können Sie eine Middleware verwenden, um sicherzustellen, dass ein Benutzer authentifiziert ist:
php
Route::get('/dashboard', function () {
    // ...
})->middleware('auth');

5. Gruppen und Prefixes

Route-Gruppen Route-Gruppen ermöglichen es Ihnen, gemeinsame Attribute für eine Gruppe von Routen zu teilen:
php
Route::middleware(['auth'])->group(function () {
    Route::get('/dashboard', function () {
        // ...
    });

    Route::get('/account', function () {
        // ...
    });
});
Prefixes Mit Prefixes können Sie einem gemeinsamen URL-Teil für eine Gruppe von Routen hinzufügen:
php
Route::prefix('admin')->group(function () {
    Route::get('/users', function () {
        // ...
    });

    Route::get('/settings', function () {
        // ...
    });
});

6. RESTful Controller und Resource-Routes

RESTful Controller Laravel bietet eine einfache Möglichkeit, RESTful Controller zu erstellen, die Standard-CRUD-Operationen handhaben:
shell
php artisan make:controller PostController --resource
Resource-Routes Sie können alle Standard-CRUD-Routen für einen Controller generieren:
php
Route::resource('posts', PostController::class);
Dies erstellt Routen für die gängigen CRUD-Operationen (index, create, store, show, edit, update, destroy).

7. Route Model Binding

Implizites Model Binding Laravel bietet die Möglichkeit, automatisch ein Model aus der Route zu binden:
php
Route::get('/user/{user}', function (App\Models\User $user) {
    return $user->email;
});
In diesem Fall wird automatisch der User mit der gegebenen ID geladen.

Explizites Model Binding

Falls Sie mehr Kontrolle benötigen, können Sie explizites Model Binding verwenden:
php
// RouteServiceProvider.php
public function boot()
{
    parent::boot();

    Route::model('user', User::class);
}

8. Tipps und Best Practices

Klarheit und Lesbarkeit Stellen Sie sicher, dass Ihre Routen einfach und klar sind. Vermeiden Sie komplexe und verschachtelte Routen, die schwer zu verstehen sind.
Sicherheit Verwenden Sie Middleware, um sicherzustellen, dass Ihre Routen sicher sind. Beispielsweise sollten nur authentifizierte Benutzer auf bestimmte Routen zugreifen können.
Konsistenz Verwenden Sie benannte Routen und Resource-Routes, um Konsistenz in Ihrer Anwendung zu gewährleisten. Dies erleichtert das Verwalten und Ändern von URLs.
Quelle: https://birdapi.de/blog/tutorials-laravel/tutorial-die-beste-moglichkeit-routen-in-laravel-11-anzulegen-und-zu-nutzen