FuelPHP - Validation

Validationest l'une des tâches les plus fréquentes et les plus répétées d'une application Web. L'utilisateur entre les données requises dans le formulaire et les soumet. Ensuite, l'application Web doit valider les données avant de traiter les données. Par exemple, l'utilisateur entre les données des employés et la post_action doit être validée avant de l'enregistrer dans la base de données. FuelPHP fournit une classe vraiment simple, Validation à cet effet.

Dans FuelPHP, le concept de validation est très simple et il fournit diverses méthodes via la classe Validation pour valider correctement le formulaire. Voici le flux de travail de la validation,

Step 1 - Créer un nouvel objet de validation en utilisant forge méthode.

$val = Validation::forge();

Step 2 - Ajoutez les champs à valider à l'aide de la méthode add.

$val->add('name', 'Employee name');

Step 3 - Définissez les règles de validation des champs ajoutés en utilisant add_rule méthode.

$val->add('name', 'Employee name')->add_rule('required'); 
$val->add('age', 'Employee age')->add_rule('required') 
   ->add_rule('numeric_min', 20) 
   ->add_rule('numeric_max', 30);

Step 4 - Appelez la méthode run pour valider les données.

// run validation on just post 
if ($val->run()) { 
   // success 
} else { 
   // falier 
}

Step 5 - Utilisez validé et erreur pour obtenir respectivement les champs valides et invalides.

$vars = $val->validated(); 
$vars = $val->error();

Règles

FuelPHP contient un grand nombre de règles à valider, et fournit également une option pour créer de nouvelles règles. Les règles prises en charge par la classe Validation sont les suivantes,

  • required - Valeur à saisir

  • required_with- Définissez un autre champ comme champ compagnon. Si le champ est défini, les champs compagnons doivent également être définis

  • match_value - Définissez la valeur à mettre en correspondance avec la valeur du champ

  • match_pattern - Définissez la valeur à associer en tant qu'expression régulière avec la valeur du champ

  • match_field - Définissez la valeur d'un autre champ comme valeur à faire correspondre avec la valeur du champ

  • match_collection - Définissez la valeur à associer comme collection avec la valeur du champ

  • min_length - Définissez la longueur minimale de la valeur du champ

  • max_length - Définissez la longueur maximale de la valeur du champ

  • exact_length - Définissez la longueur exacte de la valeur du champ

  • valid_date - Définissez la valeur du champ sur une date valide

  • valid_email - Définissez la valeur du champ sur un e-mail valide

  • valid_emails - Définissez la valeur du champ sur les e-mails valides, séparés par une virgule

  • valid_url - Définissez la valeur du champ sur une URL valide

  • valid_ip - Définissez la valeur du champ sur une adresse IP valide

  • numeric_min - Définissez la valeur minimale de la valeur du champ

  • numeric_max - Définissez la valeur maximale de la valeur du champ

  • numeric_between - Définissez la valeur minimale et maximale de la valeur du champ

  • valid_string - Similaire à regex mais plus simple

$val->add('username', 'User name')->add_rule('valid_string', array('alpha, dots');

Ici, alpha fait référence aux caractères alphabétiques et les points font référence à (.). La chaîne valide est uniquement la chaîne qui contient le caractère alphabétique et (.). Les autres options sont majuscules, minuscules, spéciaux, numériques, espaces, etc.

Exemple de travail

Nous pouvons mettre à jour la fonctionnalité d'ajout d'employé pour inclure la validation. Mettez simplement à jour lepost_add méthode du contrôleur des employés comme suit.

public function post_add() { 
   $val = Validation::forge(); 
   $val->add('name', 'Employee name')->add_rule('required'); 
   $val->add('age', 'Employee age')->add_rule('required')
      ->add_rule('numeric_min', 20) 
      ->add_rule('numeric_max', 30);  
   
   if ($val->run()) { 
      $name = Input::post('name'); 
      $age = Input::post('age');  
      $model = new model_employee(); 
      $model->name = $name; 
      $model->age = $age; 
      $model->save();  
      Response::redirect('employee/list'); 
   } else { 
      Response::redirect('employee/add'); 
   } 
}

Ici, nous avons spécifié le nameet l'âge comme champs obligatoires. leagedoit être compris entre 20 et 30. Si les deux règles sont valides, les données de l'employé seront enregistrées et redirigées vers la page de la liste des employés. Sinon, les données des employés seront rejetées et redirigées vers la page d'ajout d'employés.