Magento 2 Experten — Hyvä Theme, Tailwind CSS & SEO aus einer Hand ›

Request-Daten verarbeiten

Request-Daten verarbeiten

~14 Min. Lesezeit Zuletzt aktualisiert am 8. August 2026

Neben Route-Parametern gibt es drei weitere Quellen für Eingabedaten: Query-Parameter, Body-Daten und Header. Symfonys Request-Objekt bündelt sie alle einheitlich.

Das Request-Objekt injizieren

Ein Controller-Parameter vom Typ Request wird von Symfony AUTOMATISCH mit der aktuellen Anfrage befüllt – KEIN Autowiring-Service, sondern ein spezieller, von Symfony selbst erkannter Typ:

src/Controller/ProjectController.php
use Symfony\Component\HttpFoundation\Request;

#[Route('/projects', name: 'project_index', methods: ['GET'])]
public function index(Request $request): Response
{
    // $request steht jetzt zur Verfügung
    return new Response('...');
}

Query-Parameter lesen: $request->query

Für /projects?status=aktiv&sortierung=name:

$status = $request->query->get('status'); // 'aktiv'
$sortierung = $request->query->get('sortierung', 'erstellt'); // 'name', Default: 'erstellt'
$seite = $request->query->getInt('seite', 1); // typisiert als int, Default 1

getInt(), getBoolean() und weitere typisierte Getter vermeiden manuelle (int)-Casts und liefern bei fehlendem Parameter automatisch den angegebenen Default-Wert.

POST-Formulardaten lesen: $request->request

Verwirrend benannt, aber wichtig zu wissen: $request->request (NICHT $request selbst!) enthält klassische Formulardaten (application/x-www-form-urlencoded oder multipart/form-data):

$titel = $request->request->get('titel');
$beschreibung = $request->request->get('beschreibung', '');

Tipp: In der PRAXIS greifen wir bei Formularen fast NIE direkt auf $request->request zu – Symfony Forms (Kapitel 15) übernehmen das Auslesen, Validieren und Zuordnen zu Objekten automatisch. Der direkte Zugriff hier dient nur dem Verständnis, WAS unter der Haube passiert.

JSON-Body lesen: für spätere API-Endpunkte

$daten = json_decode($request->getContent(), true);
$titel = $daten['titel'] ?? null;

getContent() liefert den rohen Anfrage-Body als String – für JSON-Anfragen (wie sie eine spätere API-Erweiterung unseres Aufgaben-Managers nutzen könnte) der richtige Weg, da $request->request NUR formularkodierte Daten versteht.

Header lesen: $request->headers

$userAgent = $request->headers->get('User-Agent');
$istAjax = $request->headers->get('X-Requested-With') === 'XMLHttpRequest';

Datei-Uploads: $request->files

$hochgeladeneDatei = $request->files->get('anhang');
if ($hochgeladeneDatei !== null) {
    $originalName = $hochgeladeneDatei->getClientOriginalName();
}

Ein UploadedFile-Objekt statt eines rohen Strings – bietet u. a. getClientOriginalName(), getMimeType() und move() zum Speichern am Zielort, alles typsicher statt über PHPs klassisches $_FILES-Superglobal.

Übersicht: alle Request-Datenquellen

ZugriffEnthält
$request->queryURL-Query-Parameter (?key=value)
$request->requestPOST-Formulardaten (form-urlencoded/multipart)
$request->getContent()Roher Body, z. B. für JSON-APIs
$request->headersHTTP-Header
$request->filesHochgeladene Dateien
$request->cookiesCookies