Cours sur la Création de Contrôleurs dans Laravel
Introduction
Les contrôleurs dans Laravel permettent de gérer la logique de traitement des requêtes HTTP entrantes. Ils sont situés dans le répertoire app/Http/Controllers et fournissent une manière organisée de gérer les actions de l'application.
Création d'un Contrôleur
Pour créer un nouveau contrôleur, vous pouvez utiliser la commande artisan suivante :
php artisan make:controller MonControleur
Cela créera un nouveau fichier de contrôleur dans le répertoire app/Http/Controllers.
Structure d'un Contrôleur
Un contrôleur typique contient des méthodes pour manipuler les ressources. Voici un exemple de contrôleur de base :
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class MonControleur extends Controller
{
public function index()
{
return view('index');
}
public function show($id)
{
return view('show', ['id' => $id]);
}
public function create()
{
return view('create');
}
public function store(Request $request)
{
// Logique pour stocker les données
}
public function edit($id)
{
return view('edit', ['id' => $id]);
}
public function update(Request $request, $id)
{
// Logique pour mettre à jour les données
}
public function destroy($id)
{
// Logique pour supprimer les données
}
}
Utilisation des Contrôleurs dans les Routes
Vous pouvez définir des routes qui pointent vers des actions de contrôleur dans les fichiers de définition des routes (routes/web.php ou routes/api.php) :
Route::get('/index', [MonControleur::class, 'index']);
Route::get('/show/{id}', [MonControleur::class, 'show']);
Route::get('/create', [MonControleur::class, 'create']);
Route::post('/store', [MonControleur::class, 'store']);
Route::get('/edit/{id}', [MonControleur::class, 'edit']);
Route::put('/update/{id}', [MonControleur::class, 'update']);
Route::delete('/destroy/{id}', [MonControleur::class, 'destroy']);
Exemples de Scénarios
1. Gestion des Articles de Blog
Voici un exemple de contrôleur pour gérer un blog :
class BlogController extends Controller
{
public function index()
{
$articles = Article::all();
return view('blog.index', compact('articles'));
}
public function show($id)
{
$article = Article::find($id);
return view('blog.show', compact('article'));
}
public function create()
{
return view('blog.create');
}
public function store(Request $request)
{
$data = $request->validate([
'title' => 'required|string|max:255',
'content' => 'required|string',
]);
Article::create($data);
return redirect('/blog');
}
public function edit($id)
{
$article = Article::find($id);
return view('blog.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('/blog');
}
public function destroy($id)
{
Article::destroy($id);
return redirect('/blog');
}
}
2. Gestion des Utilisateurs
Voici un exemple de contrôleur pour gérer des utilisateurs :
class UserController extends Controller
{
public function index()
{
$users = User::all();
return view('users.index', compact('users'));
}
public function show($id)
{
$user = User::find($id);
return view('users.show', compact('user'));
}
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('/users');
}
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('/users');
}
public function destroy($id)
{
User::destroy($id);
return redirect('/users');
}
}
Conclusion
Les contrôleurs dans Laravel permettent de structurer proprement la logique de traitement des requêtes de votre application. En utilisant les contrôleurs, vous pouvez facilement gérer et organiser les différentes actions nécessaires à la manipulation des ressources de votre application.