Laravel Résumé
Models Migration Relation
Introduction Installation Projet:Structure Strucutre,model,migration Migration,Models,Relation Artisan CLI
Les Relations
BelongsTo HasOne HasMany BelongsToMany HasManyThrough
Exemples des Relations
Relations:oneToMany,ManyToMany... Relations:Exemples
Exercices
Exercice 1 Exercice 2
Controllers Views Routes
Routes,Controller,Model,view
Les Routes
Définir:Routes Routes avec Paramètres Routes nommées Groupes de routes
Les Controllers
Les Controllers Les Contrôleurs de Ressources
Les Vues
Vues et Blade Templates Blade Layouts et Sections Sous-vues Composants et Slots Contrôles de flux
MVC :CRUD
CRUD: Produit CRUD: Etudiant CRUD: Car CRUD,Recherche: Book
Validation
Exemple :Projets
ORM:Eloquent
Exemple :Transport
Api:Laravel +React
Middleware

Seeders & Factories
Exemples :EFM

Authenfication
Queue,job,task
TP:Schools Management
Authenfication:React
Layouts
Exercices





Cours sur les Contrôleurs de Ressources dans Laravel

Cours sur les Contrôleurs de Ressources dans Laravel

Introduction

Les contrôleurs de ressources dans Laravel simplifient la création de contrôleurs en fournissant une structure prédéfinie pour les opérations CRUD (Create, Read, Update, Delete). Ils sont particulièrement utiles pour gérer les ressources RESTful.

Création d'un Contrôleur de Ressources

Pour créer un contrôleur de ressources, vous pouvez utiliser la commande artisan suivante :

php artisan make:controller MonResourceController --resource

Cela créera un nouveau fichier de contrôleur dans le répertoire app/Http/Controllers avec les méthodes prédéfinies pour les opérations CRUD.

Structure d'un Contrôleur de Ressources

Un contrôleur de ressources typique contient les méthodes suivantes :

namespace App\Http\Controllers;

use App\Models\MonModel;
use Illuminate\Http\Request;

class MonResourceController extends Controller
{
    public function index()
    {
        // Afficher la liste des ressources
    }

    public function create()
    {
        // Afficher le formulaire de création d'une nouvelle ressource
    }

    public function store(Request $request)
    {
        // Stocker une nouvelle ressource
    }

    public function show($id)
    {
        // Afficher une ressource spécifique
    }

    public function edit($id)
    {
        // Afficher le formulaire d'édition d'une ressource spécifique
    }

    public function update(Request $request, $id)
    {
        // Mettre à jour une ressource spécifique
    }

    public function destroy($id)
    {
        // Supprimer une ressource spécifique
    }
}

Définition des Routes de Ressources

Vous pouvez définir des routes de ressources dans le fichier de définition des routes (routes/web.php ou routes/api.php) :

Route::resource('monresource', MonResourceController::class);

Cette ligne de code générera automatiquement toutes les routes nécessaires pour les opérations CRUD.

Exemples de Scénarios

1. Gestion des Articles de Blog

Voici un exemple de contrôleur de ressources pour gérer les articles de blog :

namespace App\Http\Controllers;

use App\Models\Article;
use Illuminate\Http\Request;

class ArticleController extends Controller
{
    public function index()
    {
        $articles = Article::all();
        return view('articles.index', compact('articles'));
    }

    public function create()
    {
        return view('articles.create');
    }

    public function store(Request $request)
    {
        $data = $request->validate([
            'title' => 'required|string|max:255',
            'content' => 'required|string',
        ]);

        Article::create($data);
        return redirect()->route('articles.index');
    }

    public function show($id)
    {
        $article = Article::find($id);
        return view('articles.show', compact('article'));
    }

    public function edit($id)
    {
        $article = Article::find($id);
        return view('articles.edit', compact('article'));
    }

    public function update(Request $request, $id)
    {
        $data = $request->validate([
            'title' => 'required|string|max:255',
            'content' => 'required|string',
        ]);

        Article::where('id', $id)->update($data);
        return redirect()->route('articles.index');
    }

    public function destroy($id)
    {
        Article::destroy($id);
        return redirect()->route('articles.index');
    }
}

Les routes correspondantes sont générées avec :

Route::resource('articles', ArticleController::class);

2. Gestion des Utilisateurs

Voici un exemple de contrôleur de ressources pour gérer les utilisateurs :

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        $users = User::all();
        return view('users.index', compact('users'));
    }

    public function create()
    {
        return view('users.create');
    }

    public function store(Request $request)
    {
        $data = $request->validate([
            'name' => 'required|string|max:255',
            'email' => 'required|email|unique:users,email',
            'password' => 'required|string|min:8',
        ]);

        $data['password'] = bcrypt($data['password']);
        User::create($data);
        return redirect()->route('users.index');
    }

    public function show($id)
    {
        $user = User::find($id);
        return view('users.show', compact('user'));
    }

    public function edit($id)
    {
        $user = User::find($id);
        return view('users.edit', compact('user'));
    }

    public function update(Request $request, $id)
    {
        $data = $request->validate([
            'name' => 'required|string|max:255',
            'email' => 'required|email|unique:users,email,' . $id,
        ]);

        if ($request->filled('password')) {
            $data['password'] = bcrypt($request->password);
        }

        User::where('id', $id)->update($data);
        return redirect()->route('users.index');
    }

    public function destroy($id)
    {
        User::destroy($id);
        return redirect()->route('users.index');
    }
}

Les routes correspondantes sont générées avec :

Route::resource('users', UserController::class);

Conclusion

Les contrôleurs de ressources dans Laravel offrent une manière efficace et structurée de gérer les opérations CRUD pour vos ressources. En utilisant les contrôleurs de ressources, vous pouvez facilement maintenir et étendre la logique de votre application tout en gardant un code propre et organisé.