Zum Hauptinhalt springen

Was ist das Request-Objekt

Illuminate\Http\Request ist die Klasse, mit der Sie eingehende HTTP-Anfragen objektorientiert verarbeiten. Sie greifen darüber auf Formulardaten, Query-String, Dateien, Header und alle weiteren Bestandteile eines Requests zu.

Request-Injection in Controllern

Wenn Sie in einer Controller-Methode Illuminate\Http\Request mit Type Hint deklarieren, injiziert der Service Container automatisch eine Instanz.
<?php

namespace App\Http\Controllers;

use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function store(Request $request): RedirectResponse
    {
        $name = $request->input('name');

        // Benutzer speichern...

        return redirect('/users');
    }
}
Auch in Route-Closures können Sie den Type Hint verwenden.
use Illuminate\Http\Request;

Route::get('/', function (Request $request) {
    // ...
});

Kombination mit Route-Parametern

Erwartet die Methode auch Routenparameter, listen Sie diese nach Request.
use App\Http\Controllers\UserController;

Route::put('/user/{id}', [UserController::class, 'update']);
public function update(Request $request, string $id): RedirectResponse
{
    // Zugriff auf Request-Daten via $request und auf den Routenparameter via $id

    return redirect('/users');
}

Request-Daten abrufen

Alle Eingaben abrufen

all gibt alle Eingabedaten als Array zurück. Funktioniert für HTML-Formulare wie auch XHR-Requests.
$input = $request->all();

Einzelne Felder abrufen

input ruft unabhängig von der HTTP-Methode Werte aus dem gesamten Payload ab (inkl. Query-String).
$name = $request->input('name');
Als zweites Argument geben Sie einen Default-Wert an.
$name = $request->input('name', 'Sally');
Auf Array-Eingaben greifen Sie mit Punkt-Notation zu.
$name = $request->input('products.0.name');

$names = $request->input('products.*.name');

Query-String abrufen

query liest ausschließlich den Query-String (nach ?).
$name = $request->query('name');

$name = $request->query('name', 'Helen');

// Gesamten Query-String als Array
$query = $request->query();
input deckt Body und Query-String ab, query nur den Query-String. Wenn Sie klar zwischen POST-Daten und URL-Parametern unterscheiden möchten, greifen Sie zu query.

Typisierter Abruf

Es gibt Methoden, die Eingaben direkt in einen Zieltyp umwandeln.
// Als String (Stringable-Instanz)
$name = $request->string('name')->trim();

// Als Integer
$perPage = $request->integer('per_page');

// Als Boolean ("1", "true", "on", "yes" → true)
$archived = $request->boolean('archived');

// Als Array
$versions = $request->array('versions');

// Datum als Carbon-Instanz
$birthday = $request->date('birthday');

Dynamische Eigenschaften

Sie können Felder auch direkt als Eigenschaft ansprechen.
$name = $request->name;
Bei dynamischen Eigenschaften wird zuerst im Request-Payload und danach in den Routenparametern gesucht.

Teilmenge der Eingaben

Mit only und except erhalten Sie eine Teilmenge.
$input = $request->only(['username', 'password']);

$input = $request->except(['credit_card']);

Existenz einer Eingabe prüfen

has prüft, ob ein Wert vorhanden ist.
if ($request->has('name')) {
    // ...
}

// Alle Schlüssel müssen vorhanden sein
if ($request->has(['name', 'email'])) {
    // ...
}
Für einen Wert, der nicht leer ist, verwenden Sie filled.
if ($request->filled('name')) {
    // ...
}
Kehrt die Prüfung um, verwenden Sie isNotFilled.
if ($request->isNotFilled('name')) {
    // ...
}

Pfad und Methode prüfen

Pfad ermitteln und prüfen

// Pfad abrufen (z. B. "foo/bar")
$uri = $request->path();

// Musterabgleich (mit Wildcard *)
if ($request->is('admin/*')) {
    // ...
}

// Abgleich anhand des Routennamens
if ($request->routeIs('admin.*')) {
    // ...
}

URL abrufen

// URL ohne Query-String
$url = $request->url();

// URL mit Query-String
$urlWithQueryString = $request->fullUrl();

HTTP-Methode prüfen

Mit isMethod.
$method = $request->method();

if ($request->isMethod('post')) {
    // Nur POST-Requests behandeln
}

Datei-Uploads

Hochgeladene Datei abrufen

file liefert die hochgeladene Datei als Illuminate\Http\UploadedFile.
$file = $request->file('photo');

// Auch als dynamische Eigenschaft
$file = $request->photo;
Prüfen, ob eine Datei vorhanden ist, mit hasFile.
if ($request->hasFile('photo')) {
    // ...
}

Datei speichern

store speichert die Datei automatisch mit generiertem Namen.
// In das Verzeichnis "images" der Default-Disk
$path = $request->photo->store('images');

// Auf S3
$path = $request->photo->store('images', 's3');
Wollen Sie den Dateinamen selbst festlegen, nutzen Sie storeAs.
$path = $request->photo->storeAs('images', 'filename.jpg');
Wenn Sie Datei-Uploads entgegennehmen, validieren Sie unbedingt Typ und Größe. Verwenden Sie Validierung für eine sichere Verarbeitung.

Beispiel: Formulardaten empfangen

Ein Beispiel, das Daten eines Registrierungsformulars entgegennimmt.
<?php

namespace App\Http\Controllers;

use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;

class RegisterController extends Controller
{
    public function store(Request $request): RedirectResponse
    {
        // Formulardaten abrufen
        $name = $request->input('name');
        $email = $request->input('email');
        $password = $request->input('password');

        // Nur benötigte Felder
        $data = $request->only(['name', 'email', 'password']);

        // Benutzer erstellen...

        return redirect('/dashboard');
    }
}
Die zugehörige Route:
use App\Http\Controllers\RegisterController;

Route::post('/register', [RegisterController::class, 'store']);

Nächste Schritte

Middleware

Frischen Sie den Einsatz von Middleware zum Filtern von Requests auf.
Zuletzt geändert am 13. Juli 2026