Skip to main content

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.
Vous pouvez afficher le résultat de fonctions PHP.

Affichage sans échappement

Pour omettre l’échappement, utilisez {!! !!}.
Pour les données saisies par les utilisateurs, utilisez toujours {{ }} (échappement automatique). Utiliser {!! !!} sur des données non fiables ouvre à des failles XSS.

Cohabitation avec des frameworks JavaScript

Si un framework JS utilise aussi les accolades, préfixez avec @ pour empêcher le rendu Blade.
Blade retire le @ 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.
Pour vérifier qu’une variable est définie/non null : @isset et @empty.

Directives d’authentification

Switch

Boucles

Blade propose des directives pratiques pour les boucles.
Utilisez @break et @continue pour piloter la boucle.
Vous pouvez passer la condition directement à la directive.

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.
Utilisez-le ensuite dans une vue.

Layout par héritage

Approche classique via @extends, @section, @yield. Définition du layout parent :
Héritage dans la vue enfant :
@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.
Passez des variables supplémentaires si besoin.

Protection CSRF dans les formulaires

Pour les formulaires HTML envoyant POST, PUT, PATCH ou DELETE dans le fichier de routes web, incluez toujours @csrf.
Pour envoyer 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.
{{ $variable }} échappé, {!! $variable !!} non échappé.
@if, @elseif, @else, @endif, @unless, @isset, @empty, @auth, @guest.
@for, @foreach, @forelse, @while et pilotage avec la variable $loop.
Par composant (<x-layout> et {{ $slot }}) ou par héritage (@extends, @section, @yield).
Réutilisez des parties de vue avec @include.
Dernière modification le 13 juillet 2026