Passer des données aux vues

29 mars 2025
21:32
débutant

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

Besoin d'aide avec Laravel ?

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

© 2025 - apprendre-laravel-12.net