Comment ajouter une validation de formulaire dans une application Laravel ?
Laravel fournit un objet de requête permettant d’ajouter des règles de validation aux formulaires. Nous utiliserons request->validate() pour définir les règles de validation et des messages personnalisés. Les messages d’erreur seront affichés à l’aide de la variable $errors. Je vous montrerai un exemple très simple, étape par étape, pour ajouter une validation de formulaire dans une application Laravel .
Table des matières : [Masquer]
Étapes pour la validation de formulaire avec messages d’erreur dans Laravel 11
Installer Laravel 11
Créer un contrôleur
Créer des routes
Créer un fichier Blade
Étape 1 : Installer Laravel 11
composer create-project laravel/laravel example-app
Étape 2 : Créer un contrôleur
Créez un nouveau contrôleur nommé FormController pour ajouter la validation de formulaire. Ce contrôleur contiendra deux méthodes : create() pour afficher le formulaire et store() pour gérer la logique de validation et le stockage.
php artisan make:controller FormController
// app/Http/Controllers/FormController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\View\View;
use Illuminate\Http\RedirectResponse;
class FormController extends Controller
{
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function create(): View
{
return view('createUser');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function store(Request $request): RedirectResponse
{
$validatedData = $request->validate([
'name' => 'required',
'password' => 'required|min:5',
'email' => 'required|email|unique:users'
], [
'name.required' => 'Name field is required.',
'password.required' => 'Password field is required.',
'email.required' => 'Email field is required.',
'email.email' => 'Email field must be email address.'
]);
$validatedData['password'] = bcrypt($validatedData['password']);
$user = User::create($validatedData);
return back()->with('success', 'User created successfully.');
}
}
Ajoutez la logique de validation dans la méthode store() pour vérifier les champs et afficher les messages d’erreur.
Étape 3 : Créer des routes
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\FormController;
Route::get('users/create', [ FormController::class, 'create' ]);
Route::post('users/create', [ FormController::class, 'store' ])->name('users.store');
Ajoutez des routes dans le fichier routes/web.php pour gérer les requêtes GET et POST :
Étape 4 : Créer un fichier Blade
// resources/views/createUser.blade.php
<!DOCTYPE html>
<html>
<head>
<title>Laravel 11 Form Validation Example - ItSolutionStuff.com</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
</head>
<body>
<div class="container">
<div class="card mt-5">
<h3 class="card-header p-3"><i class="fa fa-star"></i> Laravel 11 Form Validation Example - ItSolutionStuff.com</h3>
<div class="card-body">
@session('success')
<div class="alert alert-success" role="alert">
{{ $value }}
</div>
@endsession
<!-- Way 1: Display All Error Messages -->
@if ($errors->any())
<div class="alert alert-danger">
<strong>Whoops!</strong> There were some problems with your input.<br><br>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<form method="POST" action="{{ route('users.store') }}">
{{ csrf_field() }}
<div class="mb-3">
<label class="form-label" for="inputName">Name:</label>
<input
type="text"
name="name"
id="inputName"
class="form-control @error('name') is-invalid @enderror"
placeholder="Name">
<!-- Way 2: Display Error Message -->
@error('name')
<span class="text-danger">{{ $message }}</span>
@enderror
</div>
<div class="mb-3">
<label class="form-label" for="inputPassword">Password:</label>
<input
type="password"
name="password"
id="inputPassword"
class="form-control @error('password') is-invalid @enderror"
placeholder="Password">
<!-- Way 3: Display Error Message -->
@if ($errors->has('password'))
<span class="text-danger">{{ $errors->first('password') }}</span>
@endif
</div>
<div class="mb-3">
<label class="form-label" for="inputEmail">Email:</label>
<input
type="text"
name="email"
id="inputEmail"
class="form-control @error('email') is-invalid @enderror"
placeholder="Email">
@error('email')
<span class="text-danger">{{ $message }}</span>
@endif
</div>
<div class="mb-3">
<button class="btn btn-success btn-submit"><i class="fa fa-save"></i> Submit</button>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
Créez un fichier nommé createUser.blade.php dans le dossier resources/views. Ce fichier contiendra un formulaire utilisant Bootstrap avec des messages d’erreur de validation.
Une fois toutes les étapes nécessaires terminées, lancez l’application Laravel avec la commande suivante :
php artisan serve
Ensuite, ouvrez votre navigateur web, entrez l’URL suivante et visualisez le résultat de l’application :
http://localhost:8000/users/create
J’espère que ce tutoriel vous sera utile pour intégrer la validation de formulaire dans vos projets Laravel.