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.
| Propriété | Description |
|---|---|
$loop->index | Index (commence à 0) |
$loop->iteration | Numéro d’itération (commence à 1) |
$loop->remaining | Itérations restantes |
$loop->count | Nombre d’éléments |
$loop->first | Première itération ? |
$loop->last | Dernière itération ? |
$loop->even | Itération paire ? |
$loop->odd | Itération impaire ? |
$loop->depth | Profondeur d’imbrication |
$loop->parent | Variable de la boucle parente (si imbriquée) |
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.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.