Passer des données de web.php aux vues avec Laravel 12
Bienvenue dans ce troisième épisode de notre série sur Laravel 12 ! 🚀 Aujourd’hui, nous allons voir comment passer des données de web.php
aux vues et les afficher dynamiquement avec Blade.
Introduction
Laravel permet de passer des données à une vue via une route définie dans web.php
. Nous allons voir comment structurer ces données et les afficher proprement.
📌 Au programme :
- ✅ Création de routes avec des données statiques
- ✅ Passage des données aux vues avec
compact()
- ✅ Utilisation de
Arr::get()
pour récupérer un élément spécifique
Exemple : Passer des recettes à une vue
Dans routes/web.php
, nous allons définir une liste de recettes et les afficher dans une vue.
1. Créer une route pour afficher toutes les recettes
use Illuminate\Support\Facades\Route;
Route::get('/recipes', function () {
$recipes = [
1 => ['title' => 'Spaghetti Carbonara', 'ingredients' => ['Pâtes', 'Oeufs', 'Fromage', 'Lardons']],
2 => ['title' => 'Poulet Curry', 'ingredients' => ['Poulet', 'Lait de coco', 'Curry']],
3 => ['title' => 'Sauté de légumes', 'ingredients' => ['Brocoli', 'Carottes', 'Sauce soja', 'Ail']]
];
return view('recipes.index', compact('recipes'));
});
2. Créer une route pour afficher une recette spécifique
use Illuminate\Support\Arr;
Route::get('/recipe/{id}', function ($id) {
$recipes = [
1 => ['title' => 'Spaghetti Carbonara', 'ingredients' => ['Pâtes', 'Oeufs', 'Fromage', 'Lardons']],
2 => ['title' => 'Poulet Curry', 'ingredients' => ['Poulet', 'Lait de coco', 'Curry']],
3 => ['title' => 'Sauté de légumes', 'ingredients' => ['Brocoli', 'Carottes', 'Sauce soja', 'Ail']]
];
$recipe = Arr::get($recipes, $id, ['title' => 'Recette non trouvée', 'ingredients' => []]);
return view('recipes.show', compact('recipe'));
});
Création des vues
resources/views/recipes/index.blade.php
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Liste des Recettes</title>
</head>
<body>
<h1>Recettes</h1>
<ul>
@foreach ($recipes as $id => $recipe)
<li>
<a href="{{ url('/recipe/' . $id) }}">{{ $recipe['title'] }}</a>
</li>
@endforeach
</ul>
</body>
</html>
resources/views/recipes/show.blade.php
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ $recipe['title'] }}</title>
</head>
<body>
<h1>{{ $recipe['title'] }}</h1>
<h2>Ingrédients :</h2>
<ul>
@foreach ($recipe['ingredients'] as $ingredient)
<li>{{ $ingredient }}</li>
@endforeach
</ul>
<a href="{{ url('/recipes') }}">Retour aux recettes</a>
</body>
</html>
Conclusion
Dans cet épisode, nous avons appris à :
- Créer une route pour passer un tableau de données à une vue
- Utiliser
compact()
pour envoyer les données à la vue - Utiliser
Arr::get()
pour récupérer une recette spécifique et gérer les erreurs
👉 Dans le prochain épisode, nous verrons comment envoyer et traiter des formulaires avec Laravel 12 !
Vidéos de la playlist
Premiers pas et structure de Laravel 12
Les vues avec Blade et TailwindCSS
Passer des données aux vues
Le M dans MVC
Les migrations dans Laravel 12
Eloquent dans Laravel 12
Relations HasMany/BelongsTo dans Laravel 12
Réservez une session de mentorat personnalisée pour accélérer votre apprentissage et résoudre vos problèmes techniques.
Réserver une session de mentorat