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

Routing-Grundlagen

Routing-Grundlagen

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

Routing ist der ERSTE Schritt jeder Symfony-Anfrage: eine eingehende URL wird einer PHP-Methode zugeordnet. Wir beginnen jetzt mit der eigentlichen Struktur unseres Aufgaben-Manager-Projekts.

Attribut-basiertes Routing: der moderne Standard

Wie bereits in Kapitel 3 kurz gesehen, definiert Symfony Routen bevorzugt DIREKT über der Controller-Methode als PHP-Attribut – Route und Code bleiben damit an EINER Stelle sichtbar:

src/Controller/ProjectController.php
<?php

declare(strict_types=1);

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;

class ProjectController extends AbstractController
{
    #[Route('/projects', name: 'project_index', methods: ['GET'])]
    public function index(): Response
    {
        return new Response('Projektliste (folgt in Kapitel 8)');
    }
}

name: 'project_index' vergibt einen EINDEUTIGEN, internen Bezeichner für diese Route – GENAU dieser Name wird später in Twig-Templates (Kapitel 13) und Controller-Redirects (Kapitel 11) verwendet, NIEMALS die rohe URL selbst. Das ist einer der wichtigsten Symfony-Grundsätze: URLs können sich später ändern, Routennamen bleiben stabil.

methods: ['GET'] schränkt die Route auf HTTP-GET ein – ruft ein Client dieselbe URL mit POST auf, wird diese Route NICHT gematcht (Symfony antwortet mit 405 Method Not Allowed, sofern keine andere Route passt).

Alle Routen des Projekts auflisten

php bin/console debug:router

Ein unverzichtbares Werkzeug während der GESAMTEN Entwicklung – zeigt JEDE registrierte Route mit Name, Methode, Pfad und zugehörigem Controller. Bei Unsicherheit, ob eine Route wie erwartet registriert wurde, ist dies der erste Anlaufpunkt.

php bin/console debug:router project_index
# zeigt Details zu GENAU dieser einen Route

YAML-basiertes Routing: die Alternative

Symfony unterstützt weiterhin Routing über zentrale YAML-Dateien – seltener genutzt in modernem Code, aber gut zu kennen, da ältere Projekte oft so aufgebaut sind:

config/routes.yaml
project_index:
    path: /projects
    controller: App\Controller\ProjectController::index
    methods: [GET]

Tipp: Diese Schulung nutzt DURCHGEHEND Attribut-Routing, wie die überwiegende Mehrheit moderner Symfony-Projekte: Route und Implementierung bleiben visuell zusammen, was besonders in größeren Codebases die Nachvollziehbarkeit deutlich erhöht.

Routing-Priorität: Reihenfolge zählt

Symfony prüft Routen in der Reihenfolge, in der sie GELADEN werden – die ERSTE passende Route gewinnt. Bei sich überschneidenden Mustern (z. B. /projects/new vs. /projects/{id}) muss die SPEZIFISCHERE Route VOR der allgemeineren stehen, sonst würde /projects/new fälschlich als {id} = 'new' interpretiert. Kapitel 9 vertieft das mit expliziten Route-Constraints.

Die Projektstruktur wächst

Projektstruktur nach Kapitel 7

src/
└── Controller/
    └── ProjectController.php