Aller au contenu

Laravel Blade Cheatsheet

1. Introduction à Blade

Blade est le moteur de template de Laravel qui permet d'utiliser du code PHP dans les fichiers .blade.php tout en restant propre et lisible. Blade ne ralentit pas l'application car il est compilé en PHP natif.

2. Directives de base

{{ $variable }}

Affiche une variable, avec échappement des caractères HTML pour éviter les failles XSS.

{{ $name }}

Si $name contient "Vincent", le résultat affichera simplement:

Vincent

{!! $variable !!}

Affiche une variable sans échappement HTML, utile si la variable contient du code HTML.

{!! $html !!}

Si $html contient "<strong>Salut</strong>", le résultat sera:

<strong>Salut</strong>

@if, @elseif, @else

Utilisé pour les conditions.

@if($age > 18)
    <p>Tu es un adulte.</p>
@elseif($age == 18)
    <p>Tu viens juste d'avoir 18 ans!</p>
@else
    <p>Tu es mineur.</p>
@endif

Selon la valeur de $age, une des conditions sera évaluée et la phrase correspondante sera affichée.

@unless

Inverse de @if. Exécute le bloc si la condition est fausse.

@unless($logged_in)
    <p>Veuillez vous connecter.</p>
@endunless

Cela affiche "Veuillez vous connecter" uniquement si $logged_in est false.

@isset et @empty

Vérifie si une variable est définie ou vide.

@isset($user)
    <p>L'utilisateur existe.</p>
@endisset

@empty($user)
    <p>Aucun utilisateur trouvé.</p>
@endempty

Si $user est défini, la première condition s'affichera. Si $user est vide ou indéfini, la deuxième condition s'affichera.

3. Boucles

@for / @endfor

Boucle for.

@for ($i = 0; $i < 5; $i++)
    <p>Itération numéro {{ $i }}</p>
@endfor

Cela affichera:

Itération numéro 0
Itération numéro 1
Itération numéro 2
Itération numéro 3
Itération numéro 4

@foreach / @endforeach

Boucle foreach.

@foreach ($users as $user)
    <p>{{ $user->name }}</p>
@endforeach

Si $users contient une liste d'utilisateurs, chaque nom sera affiché.

@forelse / @empty

Boucle foreach avec une condition pour gérer le cas où la collection est vide.

@forelse ($posts as $post)
    <p>{{ $post->title }}</p>
@empty
    <p>Aucun post trouvé.</p>
@endforelse

Si $posts contient des articles, ils seront listés. Sinon, "Aucun post trouvé" sera affiché.

@while / @endwhile

Boucle while.

@while($count < 5)
    <p>Nombre actuel: {{ $count }}</p>
    @php $count++; @endphp
@endwhile

Tant que $count est inférieur à 5, la boucle continue.

4. Affichage conditionnel

@auth / @guest

Vérifie si l'utilisateur est authentifié ou invité.

@auth
    <p>Bienvenue, {{ auth()->user()->name }} !</p>
@endauth

@guest
    <p>Veuillez vous connecter.</p>
@endguest

Le premier bloc s'affichera pour les utilisateurs connectés, et le second pour les invités.

@switch / @case / @default

Structure de contrôle switch.

@switch($role)
    @case('admin')
        <p>Bienvenue, administrateur !</p>
        @break
    @case('user')
        <p>Bienvenue, utilisateur !</p>
        @break
    @default
        <p>Bienvenue, invité !</p>
@endswitch

Selon la valeur de $role, un message différent sera affiché.

5. Sections et Layouts

@extends

Hérite d'un layout parent.

@extends('layouts.app')

Cela signifie que la vue actuelle utilise le layout layouts.app.

@section / @endsection

Définit une section à remplir dans un layout.

@section('title', 'Accueil')

@section('content')
    <p>Ceci est la page d'accueil.</p>
@endsection

@yield

Place un contenu provenant d'une section dans le layout.

<title>@yield('title')</title>

@include

Inclut une vue partielle.

@include('partials.header')

Cela inclut le contenu de partials.header.

6. Boucles et Variables spéciales

$loop->index

Donne l'index actuel de la boucle (commence à 0).

@foreach($items as $item)
    <p>Index: {{ $loop->index }}</p>
@endforeach

Cela affiche l'index de chaque itération dans la boucle.

$loop->count

Le nombre total d'éléments dans la boucle.

@foreach($items as $item)
    <p>Total d'éléments: {{ $loop->count }}</p>
@endforeach

Affiche le nombre total d'éléments dans la boucle.

7. Composants et Slots

@component / @endcomponent

Crée des composants personnalisés.

@component('components.alert')
    <strong>Attention!</strong> Il y a un problème.
@endcomponent

@slot / @endslot

Définit des zones personnalisées dans les composants.

@component('components.alert')
    @slot('title')
        Erreur 404
    @endslot
    La page demandée n'existe pas.
@endcomponent

8. Commentaire Blade

{ Comment }

Crée un commentaire qui ne sera pas affiché dans le HTML rendu.

{ Ceci est un commentaire Blade }

9. Traitement des erreurs

@error

Affiche un message d'erreur pour un champ donné.

@error('email')
    <p class="error">{{ $message }}</p>
@enderror

Si le champ email contient une erreur, le message sera affiché.

10. Autres Directives Utiles

@csrf

Insère un champ CSRF dans les formulaires pour éviter les attaques CSRF.

<form method="POST">
    @csrf
</form>

@method

Spécifie une méthode HTTP différente (comme PUT ou DELETE).

<form method="POST">
    @method('PUT')
</form>

Cela dit au serveur que la méthode HTTP est PUT, même si le formulaire utilise POST.

@php / @endphp

Exécute du code PHP pur à l'intérieur d'une vue.

@php
    $variable = 'valeur';
@endphp

11. Directives de boucle personnalisée

@break

Interrompt une boucle.

@foreach($items as $item)
    @if($item->id == 5)
        @break
    @endif
    <p>{{ $item->name }}</p>
@endforeach

@continue

Passe à l'itération suivante dans une boucle.

@foreach($items as $item)
    @if($item->id == 1)
        @continue
    @endif
    <p>{{ $item->name }}</p>
@endforeach

12. Helpers

@includeIf

Inclut une vue seulement si elle existe.

@includeIf('view.name')

@includeWhen

Inclut une vue seulement si une condition est vraie.

@includeWhen($boolean, 'view.name')

@includeUnless

Inclut une vue si une condition est fausse.

@includeUnless($boolean, 'view.name')