Exemple de validation de formulaire avec Laravel

Exemple de validation de formulaire avec Laravel

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 .

É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.

par