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.