The Daily Commit · Ressort-Ausgabe Titelseite PHP AI Dev EN DE FR ES

The Php Times

Lesestoff — Ökosystem

Laravel 13.21 führt RouteKey-Attribut ein und erweitert Bildformate


Laravel 13.21, veröffentlicht am 21.

LARAVEL NEWS, 22. Juli 2026 kuratiert von Sönke

Juli 2026 zusammen mit dem Patch 13.21.1, bringt ein #[RouteKey]-Attribut für deklarative Routenmodellbindung, eine base64-Validierungsregel und ein #[RequestAttribute]-Attribut zum Einschleusen von Request-Daten in Controller-Parameter. Die Image-Komponente gibt nun PNG, GIF, AVIF und BMP aus, zudem wird die Application-Builder-Klasse anpassbar.

Laravel 13.21 wurde am 21. Juli 2026 zusammen mit dem gleichtägigen Patch 13.21.1 veröffentlicht. Der Patch ändert lediglich die interne Versionskonstante des Frameworks und bringt keine funktionalen Neuerungen, weshalb beide Versionen hier gemeinsam behandelt werden.

Die wichtigste Neuerung ist ein #[RouteKey]-Klassenattribut für Eloquent-Modelle. Bisher musste man zur Anpassung der für implizites Route-Model-Binding verwendeten Spalte die Methode getRouteKeyName() überschreiben. Jetzt genügt es, #[RouteKey('slug')] über der Klassendefinition anzugeben – nach demselben Muster, das bereits #[ObservedBy] und #[ScopedBy] nutzen. Fehlt das Attribut, greift getRouteKeyName() weiterhin auf den Primärschlüssel zurück. Beigetragen von nimnaherath in Pull Request #60841.

Eine neue base64-Validierungsregel ergänzt die Formatprüfungen des Validators und schließt damit eine Lücke, die Bibliotheken wie Zod bereits abdecken. Sie prüft, ob ein Wert ein gültiger RFC-4648-Base64-String ist: Der Wert muss im Strict-Modus dekodierbar sein und beim erneuten Kodieren exakt denselben String ergeben, sodass fehlerhafte Padding-Zeichen die Validierung scheitern lassen. Beigetragen von lucasmichot in PR #60808.

Ein neues #[RequestAttribute]-Kontextattribut erlaubt es, Werte, die zuvor von Middleware in der Attribut-Sammlung des Requests abgelegt wurden (etwa ein per API-Key aufgelöster Mandant), direkt als typisierte Methodenparameter einzuschleusen, anstatt manuell $request->attributes->get() aufzurufen. Ein Beispiel zeigt #[RequestAttribute('org')] Organization $org in einer InventoryController::index()-Methode. Beigetragen von cosmastech in PR #60847.

Die in Laravel 13.20 eingeführte Image-Komponente unterstützte bisher nur die Konvertierung zu WebP, JPG und JPEG, obwohl die mitgelieferte Intervention-Image-Bibliothek mehr Formate beherrscht. Laravel 13.21 ergänzt die fluenten Methoden toPng(), toGif(), toAvif() und toBmp(). Zudem wird Image::extension() korrigiert, dem bislang die MIME-Zuordnung für image/avif fehlte und das für AVIF-Ausgaben fälschlich die Dateiendung .bin erzeugte. Beigetragen von Tresor-Kasenda in PR #60713.

Application::configure() hatte bisher die Klasse ApplicationBuilder fest verdrahtet, sodass Pakete, die Laravels Application-Klasse erweitern, die gesamte Methode überschreiben mussten, um den Builder auszutauschen. Eine neue protected static $applicationBuilder-Eigenschaft erlaubt Unterklassen nun, einen eigenen Builder anzugeben, ohne die bestehende Konfigurations-API zu verändern (PR #60848).

Die Komponente Illuminate\Concurrency erhält einen eigenen schreibgeschützten Git-Subsplit und reiht sich damit in die anderen als eigenständige Pakete veröffentlichten Illuminate-Komponenten ein (PR #60836).

Weitere Korrekturen: Rollback-Callbacks bei Datenbanktransaktionen feuern nun korrekt (#60777); ein neues Fehlermeldungsmuster für verlorene Verbindungen löst automatische Reconnects aus (#60819); Grammar::whereColumn() escaped nun Fragezeichen (#60832); InvalidPayloadException-Meldungen enthalten Job-Namen und Queue (#60799); die Übergabe eines Enums an LogManager::forgetChannel() wirft keinen TypeError mehr (#60801); RedisTaggedCache::decrement() unterstützt Enum-Schlüssel (#60821); Str::wordWrap() behandelt Multibyte-Strings korrekt (#60814); das Caching von Kontextattributen kollidiert nicht mehr zwischen Eigenschaften derselben Klasse (#60815); falsy-Parameter bei Concurrency-Exceptions bleiben erhalten (#60822); die Host-Port-Auflösung im serve-Befehl ist korrigiert (#60828); und ein undefinierter Index in Pipeline\Hub::pipe() ist behoben (#60802).

Originalquelle lesen (Englisch) ↗

Artikel bewerten: +1

Leserforum

Noch keine Beiträge — eröffne die Debatte.

← Ökosystem — Page B1

"All the Code That's Fit to Ship" · The Daily Commit · Bildschirm-Ausgabe · Impressum · Datenschutz