The Daily Commit · Édition de rubrique La une PHP AI Dev EN DE FR ES

The Php Times

Lectures — Écosystème

Laravel 13.21 introduit l'attribut RouteKey et étend les formats d'image

LARAVEL NEWS, 22 juillet 2026 sélectionné par Sönke

Laravel 13.21, publié le 21 juillet 2026 avec le correctif 13.21.1, ajoute un attribut #[RouteKey] pour la liaison de modèle de route déclarative, une règle de validation base64 et un attribut contextuel #[RequestAttribute] pour injecter des données de requête dans les paramètres de contrôleur. Le composant Image produit désormais du PNG, GIF, AVIF et BMP, et la classe du générateur d'application devient personnalisable.

Laravel 13.21 a été publié le 21 juillet 2026, accompagné le même jour du correctif 13.21.1, qui se contente d'incrémenter la constante de version interne du framework sans apporter de changement fonctionnel ; les deux versions sont donc traitées ensemble.

La principale nouveauté est un attribut de classe #[RouteKey] pour les modèles Eloquent. Auparavant, personnaliser la colonne utilisée pour la liaison implicite de modèle de route nécessitait de surcharger la méthode getRouteKeyName(). Il suffit désormais de déclarer #[RouteKey('slug')] au-dessus de la définition de la classe, selon le même principe déjà employé par #[ObservedBy] et #[ScopedBy]. En l'absence d'attribut, getRouteKeyName() continue de se rabattre sur la clé primaire. Contribution de nimnaherath dans la pull request #60841.

Une nouvelle règle de validation base64 rejoint les vérifications de format de chaîne du validateur, comblant un manque déjà couvert par des bibliothèques comme Zod. Elle vérifie qu'une valeur est une chaîne Base64 conforme à la RFC 4648, en exigeant un décodage en mode strict qui, réencodé, redonne exactement la même chaîne ; les erreurs de padding ou les caractères parasites font donc échouer la validation. Contribution de lucasmichot dans la PR #60808.

Un nouvel attribut contextuel #[RequestAttribute] permet d'injecter directement dans un paramètre typé des valeurs auparavant stockées dans le sac d'attributs de la requête (par exemple un tenant ou une organisation résolus par un middleware), sans appeler manuellement $request->attributes->get(). Un exemple illustre #[RequestAttribute('org')] Organization $org dans une méthode InventoryController::index(). Contribution de cosmastech dans la PR #60847.

Le composant Image, introduit dans Laravel 13.20, ne prenait en charge que la conversion vers WebP, JPG et JPEG, alors que la bibliothèque Intervention Image embarquée gère davantage de formats. Laravel 13.21 ajoute les méthodes fluides toPng(), toGif(), toAvif() et toBmp(). Cette version corrige aussi Image::extension(), qui manquait du mappage MIME image/avif et produisait à tort une extension .bin pour les sorties AVIF. Contribution de Tresor-Kasenda dans la PR #60713.

Application::configure() imposait auparavant la classe ApplicationBuilder en dur, obligeant les paquets étendant la classe Application de Laravel à surcharger toute la méthode pour la remplacer. Une nouvelle propriété protected static $applicationBuilder permet désormais aux sous-classes de fournir leur propre générateur tout en conservant l'API de configuration existante (PR #60848).

Le composant Illuminate\Concurrency dispose désormais de son propre sous-dépôt Git en lecture seule, rejoignant les autres composants Illuminate déjà publiés comme paquets indépendants (PR #60836).

Autres corrections : les callbacks de rollback des transactions de base de données se déclenchent désormais correctement (#60777) ; un nouveau motif de message de connexion perdue déclenche des reconnexions automatiques (#60819) ; Grammar::whereColumn() échappe désormais les points d'interrogation (#60832) ; les messages d'InvalidPayloadException incluent le nom du job et la file d'attente (#60799) ; passer un enum à LogManager::forgetChannel() ne provoque plus de TypeError (#60801) ; RedisTaggedCache::decrement() gère les clés de type enum (#60821) ; Str::wordWrap() traite correctement les chaînes multi-octets (#60814) ; la mise en cache des attributs contextuels ne se mélange plus entre propriétés d'une même classe (#60815) ; les paramètres falsy des exceptions de concurrence sont préservés (#60822) ; l'analyse du port hôte dans la commande serve est corrigée (#60828) ; et un index non défini dans Pipeline\Hub::pipe() est résolu (#60802).

Lire la source originale (en anglais) ↗

Évaluer cet article : +1

Tribune des lecteurs

Pas encore de contributions — lance le débat.

← Écosystème — Page B1

"All the Code That's Fit to Ship" · The Daily Commit · Édition écran · Mentions légales · Politique de confidentialité