L'essentiel pour débuter avec les templates Blade
Apprenez les bases de Blade, le moteur de templating puissant de Laravel : conditions, boucles, héritage et composants.
Blade est le moteur de templating puissant et élégant inclus avec Laravel. Contrairement à d’autres moteurs, Blade vous permet d’utiliser du code PHP ordinaire dans vos templates, tout en compilant vos vues en code PHP pur pour des performances optimales.
Ce guide est un condensé des concepts fondamentaux à connaître pour bien démarrer.
Affichage des données
La syntaxe pour afficher des variables est simple : utilisez des doubles accolades. Blade s’occupe automatiquement d’échapper les données pour prévenir les failles XSS.
<p>Bienvenue, {{ $user->name }} !</p>
Note : Si vous devez afficher du contenu non échappé (pour du HTML brut par exemple), utilisez la syntaxe {!! $var !!}. Soyez prudent avec les données fournies par les utilisateurs ou provenant de sources externes.
Conditions
Blade propose des raccourcis propres pour les structures de contrôle PHP classiques.
@if ($isDay === true)
<p>Bonjour !</p>
@elseif ($isEvening)
<p>Bonsoir !</p>
@else
<p>Bonne nuit !</p>
@endif
{{-- Équivalent de if (!...) --}}
@unless (Auth::check())
<p>Veuillez vous connecter.</p>
@endunless
Boucles et la variable $loop
Les boucles permettent de parcourir des collections de données simplement.
@foreach($users as $user)
<p>{{ $user->name }}</p>
@endforeach
Il est souvent utile d’afficher un message si la collection est vide avec @forelse :
@forelse($users as $user)
<p>{{ $user->name }}</p>
@empty
<p>Aucun utilisateur trouvé.</p>
@endforelse
La puissance de $loop
À l’intérieur d’une boucle @foreach, une variable $loop est automatiquement disponible. Elle donne accès à des informations utiles sur l’état de la boucle :
| Propriété | Description |
|---|---|
$loop->index | L’index de l’itération actuelle (commence à 0). |
$loop->iteration | L’itération actuelle (commence à 1). |
$loop->first | true s’il s’agit du premier élément. |
$loop->last | true s’il s’agit du dernier élément. |
$loop->even | true si l’itération est paire. |
$loop->odd | true si l’itération est impaire. |
Exemple d’usage :
@foreach($users as $user)
<li class="{{ $loop->first ? 'font-bold' : '' }}">
{{ $user->name }} ({{ $loop->iteration }} / {{ $loop->count }})
</li>
@endforeach
Les Composants Blade (Moderne)
Les composants sont la méthode recommandée pour créer des éléments d’interface réutilisables. Ils remplacent avantageusement les inclusions simples pour des structures plus complexes.
Composant anonyme
Créez un fichier dans resources/views/components/alert.blade.php :
<div class="alert alert-info">
{{ $slot }}
</div>
Utilisez-le n’importe où avec la syntaxe <x-...> :
<x-alert>
Ceci est un message d'alerte !
</x-alert>
Héritage et Layouts
Blade permet de définir une structure de page commune (Layout) que vos autres vues viendront remplir via des sections.
Le layout (resources/views/layouts/app.blade.php) :
<html>
<body>
<header>Mon Super Blog</header>
<main>
@yield('content')
</main>
</body>
</html>
La vue qui l’étend :
@extends('layouts.app')
@section('content')
<h1>Mon Article</h1>
<p>Contenu de la page...</p>
@endsection
Inclusion de fragments
Pour des morceaux de code très simples sans logique particulière, @include reste disponible :
@include('partials.footer')
Consulter la documentation officielle de Blade pour approfondir le sujet.