Laravel 12.39 : Directive @hasStack et filtre middleware pour route:list
La version 12.39 de Laravel, publiée le 18 novembre 2025, apporte deux nouveautés pratiques pour améliorer votre workflow de développement : une directive Blade @hasStack pour gérer conditionnellement l’affichage de vos stacks, et un filtre --middleware pour la commande route:list qui simplifie considérablement le débogage des routes.
La directive Blade @hasStack
La directive @hasStack résout un problème courant : comment afficher une structure HTML uniquement si un stack Blade contient du contenu ? Avant Laravel 12.39, vous deviez utiliser des solutions de contournement peu élégantes. Désormais, cette vérification conditionnelle est native.
Fonctionnement de @hasStack
La directive vérifie l’existence de contenu dans un stack avant de l’afficher. Voici un exemple concret :
// Dans une vue enfant
@push('scripts')
<script src="/js/analytics.js"></script>
<script src="/js/tracking.js"></script>
@endpush
// Dans le layout principal
@hasstack('scripts')
<div class="custom-scripts">
@stack('scripts')
</div>
@endif
Sans @hasStack, le conteneur <div class="custom-scripts"> serait toujours rendu, même vide. Avec cette directive, il n’apparaît que si des scripts sont effectivement poussés dans le stack.
Cas d’usage : Gestion de listes dynamiques
Un exemple particulièrement utile pour les menus de navigation conditionnels :
// Dans différentes sections de votre application
@push('sidebar-items')
<li><a href="/admin/users">Utilisateurs</a></li>
@endpush
// Dans le composant sidebar
@hasstack('sidebar-items')
<aside class="sidebar">
<ul class="nav">
@stack('sidebar-items')
</ul>
</aside>
@endif
Cette approche évite de générer du HTML inutile pour une sidebar vide et améliore la propreté de votre code source.
Optimisation des ressources CSS/JS
Pour gérer proprement les styles spécifiques à certaines pages :
// Page produit
@push('page-styles')
<link rel="stylesheet" href="/css/product-gallery.css">
@endpush
// Layout
@hasstack('page-styles')
<!-- Styles spécifiques à la page -->
@stack('page-styles')
@endif
Vous ne chargez ainsi les ressources que là où elles sont nécessaires, tout en maintenant une structure de layout propre.
Filtre –middleware pour route:list
La commande route:list gagne un nouveau paramètre --middleware qui permet de filtrer les routes par middleware. Une amélioration significative pour les applications complexes comportant des centaines de routes.
Utilisation basique
# Afficher uniquement les routes protégées par le middleware auth
php artisan route:list --middleware=auth
# Filtrer par groupe de middleware
php artisan route:list --middleware=api
# Rechercher un middleware spécifique
php artisan route:list --middleware=ThrottleRequests
Cas pratiques de débogage
Pour vérifier rapidement quelles routes sont soumises à un rate limiting :
# Identifier toutes les routes avec throttle
php artisan route:list --middleware=throttle
Ou pour auditer les routes nécessitant des permissions spécifiques :
# Routes avec vérification de rôle admin
php artisan route:list --middleware=role:admin
Combinaison avec d’autres filtres
Le filtre --middleware s’associe parfaitement avec les options existantes :
# Routes API avec authentification
php artisan route:list --middleware=auth:api --path=api
# Routes POST avec CSRF en mode compact
php artisan route:list --middleware=csrf --method=POST --compact
Points d’attention
- La directive
@hasStackvérifie uniquement la présence de contenu, pas sa nature ou sa validité - Le filtre
--middlewareaccepte les recherches partielles, ce qui peut retourner plus de résultats que prévu - Ces fonctionnalités sont rétrocompatibles et ne nécessitent aucune migration
Autres améliorations de la version 12.39
Cette version inclut également :
- Support de Symfony 7.4
- Correction du comportement de
Factory@insert()avec les array casts - Amélioration de la compatibilité avec les tests parallèles
- Mise à jour des styles de pagination Tailwind pour l’accessibilité
Conclusion
Laravel 12.39 continue d’affiner l’expérience développeur avec des ajouts ciblés qui répondent à des besoins concrets. La directive @hasStack élimine du code conditionnel verbeux dans vos templates, tandis que le filtre --middleware accélère significativement le débogage des routes dans les applications de taille moyenne à grande.
Ressources
À propos de Laravel Actu
Développeur passionné par Laravel et son écosystème.
Voir tous les articles