Introduction
Blade est le moteur de templates simple et puissant inclus dans Laravel. Contrairement à certains moteurs PHP, Blade n’interdit pas l’usage de PHP pur dans les templates. Toutes les vues Blade sont compilées en PHP et mises en cache, donc Blade ajoute très peu de surcoût à l’application. Les fichiers Blade ont l’extension.blade.php et se trouvent généralement dans resources/views.
Flux de compilation Blade
Un.blade.php devient une réponse HTML de la manière suivante. Comme le fichier compilé est mis en cache, les requêtes suivantes sur le même template ignorent la compilation.
Affichage des données
Pour afficher des données passées à une vue Blade, entourez la variable de doubles accolades.{{ }} passe automatiquement par htmlspecialchars pour prévenir les attaques XSS.Affichage sans échappement
Pour omettre l’échappement, utilisez{!! !!}.
Cohabitation avec des frameworks JavaScript
Si un framework JS utilise aussi les accolades, préfixez avec@ pour empêcher le rendu Blade.
@ et laisse {{ name }} intact pour que le framework JS le rende.
Pour comparer Blade avec Livewire ou Inertia, consultez Frontend.
Directives Blade
Conditionnelles (if)
@unless inverse la condition.
@isset et @empty.
Directives d’authentification
Switch
Boucles
Blade propose des directives pratiques pour les boucles.@break et @continue pour piloter la boucle.
Variable $loop
À l’intérieur d’une @foreach, $loop fournit des infos sur l’itération.
Commentaires
Les commentaires Blade ne sont pas rendus dans le HTML.Layouts
Layout par composant
L’approche recommandée est d’utiliser des composants Blade. Créez d’abord le composant de layout.Layout par héritage
Approche classique via@extends, @section, @yield.
Définition du layout parent :
@parent conserve le contenu du @section du layout parent tout en y ajoutant.Piles
Utilisez@push et @stack pour transmettre des fragments comme du JavaScript ou du CSS entre un layout et ses vues enfants ou composants.
Une vue enfant ou un composant ajoute du contenu à une pile nommée, et le layout l’affiche avec un @stack du même nom.
@stack après les composants qui ajoutent du contenu à la pile, comme <x-chart />.
@stack n’affiche que le contenu ajouté avant son exécution. Le contenu ajouté par des composants rendus après @stack n’est pas inclus, même au sein du même layout. Placez @stack après les composants concernés, par exemple à la fin de <body>.
Pour plus de détails, consultez Stacks dans la documentation officielle de Laravel.
Inclusion de sous-vues
@include insère une vue Blade dans une autre.
Les variables disponibles dans la vue parente le sont aussi dans la vue incluse.
Protection CSRF dans les formulaires
Pour les formulaires HTML envoyantPOST, PUT, PATCH ou DELETE dans le fichier de routes web, incluez toujours @csrf.
PUT, PATCH ou DELETE depuis un formulaire, utilisez @method.
Pour la protection CSRF de production, notamment la vérification d’Origin et les en-têtes
X-CSRF-TOKEN / X-XSRF-TOKEN, consultez Protection CSRF.Récapitulatif
Principales fonctionnalités de Blade.Affichage des données
Affichage des données
{{ $variable }} échappé, {!! $variable !!} non échappé.Conditionnelles
Conditionnelles
@if, @elseif, @else, @endif, @unless, @isset, @empty, @auth, @guest.Boucles
Boucles
@for, @foreach, @forelse, @while et pilotage avec la variable $loop.Layouts
Layouts
Par composant (
<x-layout> et {{ $slot }}) ou par héritage (@extends, @section, @yield).Sous-vues
Sous-vues
Réutilisez des parties de vue avec
@include.