Views
Views
Introduction à Blade
Blade est le moteur de templates intégré à Laravel. Il te permet d'utiliser du code PHP de manière simplifiée dans tes fichiers de vue, tout en offrant une syntaxe propre et expressive. Les fichiers Blade se terminent par l'extension .blade.php et sont généralement stockés dans le répertoire resources/views.
Rendre une Vue et Passer des Données
Pour afficher une vue, tu peux utiliser la fonction globale view dans tes routes ou contrôleurs. Par exemple :
Route::get('/', function () {
return view('accueil', ['nom' => 'Jean']);
});
Dans cet exemple, la vue accueil recevra une variable $nom avec la valeur 'Jean'. Dans ta vue Blade, tu peux afficher cette donnée ainsi :
<p>Bienvenue, {{ $nom }} !</p>
Les Composants Anonymes
Les composants anonymes sont des morceaux réutilisables de code Blade qui n'ont pas besoin d'une classe PHP associée. Ils permettent de simplifier la structure de ton application en évitant la création de classes inutiles.
Création d'un Composant Anonyme
Pour créer un composant anonyme, il te suffit de créer un fichier Blade dans le répertoire resources/views/components. Par exemple, pour un composant d'alerte :
<!-- resources/views/components/alerte.blade.php -->
<div class="alerte alerte-{{ $type }}">
{{ $message }}
</div>
Ici, le composant utilise deux variables : $type et $message.
Utilisation d'un Composant Anonyme
Pour utiliser ce composant dans une vue, tu peux l'appeler ainsi :
<x-alerte :type="$type" :message="$message" />
Les deux-points : avant les noms d'attributs indiquent à Blade que ces attributs doivent être évalués comme du code PHP. Pas besoin de préfixer de : lorsqu’on passe une string au composant.
Passage de Données aux Composants
Pour passer des données à un composant, tu peux utiliser la directive @props en haut du fichier du composant :
<!-- resources/views/components/alerte.blade.php -->
@props(['type' => 'info', 'message'])
<div class="alerte alerte-{{ $type }}">
{{ $message }}
</div>
Ici, @props définit les variables $type et $message avec des valeurs par défaut. Si aucune valeur n'est passée lors de l'appel du composant, $type sera 'info' par défaut.
Les Layouts et les Slots
Les layouts sont des modèles de base que tes vues peuvent étendre, ce qui te permet de maintenir une structure cohérente à travers ton application. Les slots sont des espaces réservés dans ces layouts où le contenu spécifique à chaque vue sera inséré.
Création d'un Layout avec Slots
Imaginons un layout de base situé dans resources/views/layouts/app.blade.php :
<!-- resources/views/layouts/app.blade.php -->
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>{{ $title ?? 'Mon Application' }}</title>
</head>
<body>
<header>
<!-- Contenu de l'en-tête -->
</header>
<main>
{{ $slot }}
</main>
<footer>
<!-- Contenu du pied de page -->
</footer>
</body>
</html>
Ici, {{ $slot }} représente l'endroit où le contenu spécifique de chaque vue sera inséré. La variable $title est optionnelle et peut être définie dans chaque vue.
Utilisation d'un Layout dans une Vue
Pour utiliser ce layout dans une vue, tu peux faire :
<!-- resources/views/accueil.blade.php -->
<x-layouts.app>
<x-slot:title>
Page d'accueil
</x-slot:title>
<h1>Bienvenue sur la page d'accueil</h1>
<p>Ceci est le contenu de la page.</p>
</x-layouts.app>
Ici, x-slot:title permet de définir la valeur de la variable $title dans le layout. Le contenu entre les balises <x-layouts.app> sera inséré à la place de {{ $slot }} dans le layout.
Autres Fonctionnalités Utiles de Blade
-
Directives Conditionnelles : Blade offre des directives comme
@if,@elseif,@elseet@unlesspour gérer les conditions.@if ($utilisateur->estAdmin()) <p>Bienvenue, administrateur.</p> @else <p>Bienvenue, utilisateur.</p> @endif -
Boucles : Pour itérer sur des collections ou des tableaux, tu peux utiliser
@foreach,@for,@whileet@forelse.@foreach ($articles as $article) <h2>{{ $article->titre }}</h2> <p>{{ $article->contenu }}</p> @endforeach -
Inclusion de Vues : Avec la directive
@include, tu peux inclure une vue à l'intérieur d'une autre.@include('partials.entete')
En adoptant ces fonctionnalités de Blade, tu pourras créer des vues Laravel propres, modulaires et maintenables, ce qui facilitera le développement et améliorera la qualité globale de ton application.
Pour approfondir tes connaissances sur Blade, consulte la documentation :
Ouais, parfaitement clair (pour une fois, ça change 🥴).
Voici une liste révisée des exercices pour entraîner tes étudiants débutants à créer des vues Blade simples sans s'embourber avec une DB ou des layouts compliqués. Let's go 🚀 :
Exercices pratiques sur les vues Blade
Exercice 1 : Page d'Accueil simple
Objectif : Créer et afficher une vue basique.
- Crée une route
/accueilqui affiche une vueaccueil.blade.php. - Dans cette vue, affiche un titre et un paragraphe de bienvenue.
Exercice 2 : Page "À propos"
Objectif : Passer et afficher des données simples dans une vue.
- Crée une route
/a-proposqui affiche une vuea-propos.blade.php. - Passe à la vue un tableau contenant plusieurs informations sur l'entreprise (nom, année de création, mission).
- Affiche ces informations dans la vue sous forme de liste.
Exercice 3 : Affichage d'une liste avec conditions
Objectif : Utiliser les boucles et les conditions Blade.
Crée une route /membres qui transmet à la vue membres.blade.php un tableau de membres suivant :
$membres = [
['prenom' => 'Alice', 'age' => 29],
['prenom' => 'Bob', 'age' => 34],
['prenom' => 'Chloé', 'age' => 17],
['prenom' => 'Damien', 'age' => 42],
];
- Affiche chaque membre dans une liste.
- Si le membre est majeur (18+), affiche son âge. Sinon, affiche "Mineur".
Exercice 4 : Création d'un composant anonyme "Card"
Objectif : Créer et réutiliser un composant Blade anonyme.
- Crée un composant anonyme nommé
card.blade.phpdansresources/views/components/. - Ce composant doit afficher un titre et un texte descriptif.
- Crée une route
/servicesavec une vue qui affiche trois cartes différentes présentant des services fictifs (ex : Design, Développement, Marketing).
Indice : Passe les données au composant via des attributs.
Exercice 5 : Liste de produits avec lien vers une vue détaillée
Objectif : Créer des vues dynamiques avec des liens et afficher des données spécifiques.
- Crée une route
/produitsqui passe ce tableau de produits à la vueproduits.blade.php:
$produits = [
['id' => 1, 'nom' => 'PC Portable', 'prix' => 1200, 'en_promo' => true],
['id' => 2, 'nom' => 'Souris Gaming', 'prix' => 80, 'en_promo' => false],
['id' => 3, 'nom' => 'Clavier Mécanique', 'prix' => 150, 'en_promo' => true],
['id' => 4, 'nom' => 'Casque Audio', 'prix' => 100, 'en_promo' => false],
];
- Affiche chaque produit avec son nom et son prix.
- Si un produit est en promo, affiche à côté "🔥 Promo !".
- Chaque produit doit contenir un lien vers une route
/produits/{id}.
Ensuite :
- Crée la route
/produits/{id}pour afficher une vueproduit.blade.phpprésentant uniquement les détails du produit choisi.
Exercice 6 : Composant Blade pour produits
Objectif : Réutiliser du code Blade en créant un composant pour afficher chaque produit.
- Reprends la liste des produits fournie précédemment (Exercice 5).
- Crée un composant anonyme
produit.blade.phpqui affiche proprement un produit (nom, prix, promo éventuelle). - Modifie la vue précédente pour utiliser ton composant à chaque produit de la liste.
