Laravel - Validation

La validation est l'aspect le plus important lors de la conception d'une application. Il valide les données entrantes. Par défaut, la classe de contrôleur de base utilise unValidatesRequests trait qui fournit une méthode pratique pour valider les requêtes HTTP entrantes avec une variété de règles de validation puissantes.

Règles de validation disponibles dans Laravel

Laravel recherchera toujours les erreurs dans les données de session et les liera automatiquement à la vue si elles sont disponibles. Donc, il est important de noter qu'un$errors variable sera toujours disponible dans toutes vos vues à chaque demande, ce qui vous permet d'assumer $errorsLa variable est toujours définie et peut être utilisée en toute sécurité. Le tableau suivant présente toutes les règles de validation disponibles dans Laravel.

Règles de validation disponibles dans Laravel
Accepté URL active Après (date)
Alpha Alpha Dash Alphanumérique
Tableau Avant (date) Entre
Booléen Confirmé Date
Format de date Différent Chiffres
Chiffres entre Email Existe (base de données)
Fichier d'image) Dans Entier
Adresse IP JSON Max
Types MIME (fichier) Min Pas dedans
Numérique Expression régulière Obligatoire
Requis si Obligatoire sauf Obligatoire avec
Obligatoire avec tous Requis sans Requis sans tout
Même Taille Chaîne
Fuseau horaire Unique (base de données) URL

le $errors variable sera une instance de Illuminate\Support\MessageBag. Le message d'erreur peut être affiché dans le fichier de visualisation en ajoutant le code comme indiqué ci-dessous.

@if (count($errors) > 0)
   <div class = "alert alert-danger">
      <ul>
         @foreach ($errors->all() as $error)
            <li>{{ $error }}</li>
         @endforeach
      </ul>
   </div>
@endif

Exemple

Step 1 - Créez un contrôleur appelé ValidationController en exécutant la commande suivante.

php artisan make:controller ValidationController --plain

Step 2 - Après une exécution réussie, vous recevrez la sortie suivante -

Step 3 - Copiez le code suivant dans

app/Http/Controllers/ValidationController.php fichier.

app/Http/Controllers/ValidationController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class ValidationController extends Controller {
   public function showform() {
      return view('login');
   }
   public function validateform(Request $request) {
      print_r($request->all());
      $this->validate($request,[
         'username'=>'required|max:8',
         'password'=>'required'
      ]);
   }
}

Step 4 - Créez un fichier de vue appelé resources/views/login.blade.php et copiez le code suivant dans ce fichier.

resources/views/login.blade.php

<html>
   
   <head>
      <title>Login Form</title>
   </head>

   <body>
      
      @if (count($errors) > 0)
         <div class = "alert alert-danger">
            <ul>
               @foreach ($errors->all() as $error)
                  <li>{{ $error }}</li>
               @endforeach
            </ul>
         </div>
      @endif
      
      <?php
         echo Form::open(array('url'=>'/validation'));
      ?>
      
      <table border = '1'>
         <tr>
            <td align = 'center' colspan = '2'>Login</td>
         </tr>
         <tr>
            <td>Username</td>
            <td><?php echo Form::text('username'); ?></td>
         </tr>
         <tr>
            <td>Password</td>
            <td><?php echo Form::password('password'); ?></td>
         </tr>
         <tr>
            <td align = 'center' colspan = '2'
               ><?php echo Form::submit('Login'); ?  ></td>
         </tr>
      </table>
      
      <?php
         echo Form::close();
      ?>
   
   </body>
</html>

Step 5 - Ajoutez les lignes suivantes dans app/Http/routes.php.

app/Http/routes.php

Route::get('/validation','[email protected]');
Route::post('/validation','[email protected]');

Step 6 - Visitez l'URL suivante pour tester la validation.

http://localhost:8000/validation

Step 7 - Cliquez sur le “Login”sans rien entrer dans le champ de texte. La sortie sera comme indiqué dans l'image suivante.