Maison > cadre php > PensezPHP > Comprendre la validation des données dans ThinkPHP6

Comprendre la validation des données dans ThinkPHP6

WBOY
Libérer: 2023-06-20 22:45:08
original
1813 Les gens l'ont consulté

ThinkPHP6 est actuellement l'un des frameworks de développement PHP les plus populaires, et de nombreux développeurs PHP aiment l'utiliser pour le développement. Pendant le processus de développement, la vérification des données est une partie très importante, car une excellente application doit disposer d'une vérification de la légalité des données saisies par l'utilisateur. Dans cet article, nous présenterons en détail comment implémenter la validation des données dans ThinkPHP6.

  1. Idée de base

La validation des données ThinkPHP6 est basée sur le concept de validateur, c'est-à-dire que nous devons créer un objet validateur pour valider les données. Lors de la création d'un objet validateur, nous devons spécifier des règles de validation pour celui-ci, puis appeler la méthode validate pour vérification. Si la vérification échoue, les informations d'erreur de vérification sont renvoyées, sinon true est renvoyé. Voici un exemple simple :

use thinkValidate;

$data = [
    'name'  => 'thinkphp',
    'email' => 'thinkphp@qq.com',
    'age'   => 18
];

$validate = new Validate([
    'name'  => 'require|max:25',
    'email' => 'email',
    'age'   => 'number|between:1,120',
]);

if (!$validate->check($data)) {
    dump($validate->getError());
}
Copier après la connexion

Dans le code ci-dessus, nous définissons d'abord un tableau $data, qui contient les données qui doivent être vérifiées. Ensuite, nous avons créé un objet validateur $validate et défini trois règles de validation pour celui-ci, à savoir : le champ du nom ne peut pas être vide et peut contenir jusqu'à 25 caractères ; le champ e-mail doit être une adresse e-mail valide ; le champ de l'âge doit être un nombre ; Entre 1 et 120. Enfin, la méthode check est appelée pour vérifier les données. Si la vérification échoue, un message d'erreur est généré.

  1. Explication détaillée des règles de vérification

Dans l'exemple ci-dessus, nous avons utilisé certaines règles de vérification courantes, telles que : require, max, email, number, between, etc. Ci-dessous, nous présenterons quelques règles de validation couramment utilisées et leur utilisation.

  1. require

Cette règle permet de préciser que le champ ne peut pas être vide. L'utilisation est la suivante :

'username' => 'require'
Copier après la connexion
  1. max,min

Cette règle est utilisée pour limiter la longueur maximale ou minimale d'un champ. L'usage est le suivant :

'username' => 'max:25'
'password' => 'min:8'
Copier après la connexion
  1. email

Cette règle permet de préciser que le champ doit être une adresse email valide. L'utilisation est la suivante :

'email' => 'email'
Copier après la connexion
  1. alpha,alphaNum

Cette règle est utilisée pour spécifier que le champ ne peut contenir que des lettres ou des combinaisons alphanumériques. L'utilisation est la suivante :

'username' => 'alpha'
'password' => 'alphaNum'
Copier après la connexion
  1. regex

Cette règle est utilisée pour spécifier que le champ doit correspondre à l'expression régulière spécifiée. L'utilisation est la suivante :

'username' => 'regex:^[a-z]+$'
Copier après la connexion
  1. unique

Cette règle permet de préciser que la valeur du champ doit être unique dans la base de données. L'utilisation est la suivante :

'email' => 'unique:user,email'
Copier après la connexion

Dans l'exemple ci-dessus, le paramètre après unique précise que dans la table user, la valeur du champ email doit être unique.

  1. in

Cette règle est utilisée pour spécifier que la valeur du champ doit être dans la plage spécifiée. L'utilisation est la suivante :

'gender' => 'in:0,1'
Copier après la connexion
  1. between

Cette règle est utilisée pour spécifier que la valeur du champ doit être dans la plage spécifiée. L'utilisation est la suivante :

'age' => 'between:1,120'
Copier après la connexion
  1. confirm

Cette règle est utilisée pour spécifier que deux champs doivent être égaux. L'utilisation est la suivante :

'password_confirm' => 'confirm:password'
Copier après la connexion

Dans l'exemple ci-dessus, nous exigeons que les deux champs password_confirm et password soient égaux.

  1. Règles de validation personnalisées

Parfois, nous devons utiliser certaines règles de validation personnalisées pour répondre à des besoins spécifiques. Dans ce cas, nous pouvons utiliser la méthode addRule pour personnaliser les règles de validation. Par exemple, si nous voulons vérifier que le contenu d'une zone de texte doit contenir un mot-clé spécifié, nous pouvons définir une règle comme celle-ci :

use thinkValidate;

Validate::rule('my_rule', function($value, $rule) {
    return strpos($value, $rule) !== false;
});

$validate = new Validate([
    'content' => 'my_rule:thinkphp'
]);

if (!$validate->check($data)) {
    dump($validate->getError());
}
Copier après la connexion

Dans le code ci-dessus, nous enregistrons d'abord une règle personnalisée my_rule via la méthode statique règle. Son utilisation Identique aux autres règles. Nous avons ensuite utilisé cette règle dans le validateur pour vérifier que la valeur du champ content doit contenir le mot-clé thinkphp.

  1. Vérification du scénario

Parfois, nous devons utiliser des règles de validation différentes pour le même champ dans différents scénarios. Par exemple, nous devons utiliser des règles de validation différentes pour le champ e-mail dans les deux scénarios d'enregistrement d'utilisateur et de modification d'utilisateur. À l’heure actuelle, nous pouvons utiliser la vérification de scénarios pour répondre aux besoins. Nous pouvons spécifier le nom du scénario lors de la création de l'objet validateur, puis définir différentes règles de validation pour chaque scénario. Par exemple :

use thinkValidate;

$data = [
    'email' => 'thinkphp@qq.com',
    'password' => '123456',
];

$validate = new Validate([
    'email' => 'require|email|unique:user,email',
    'password' => 'require|min:6'
]);

// 假设当前为用户修改资料场景
$validate->scene('edit', function($validate) {
    $validate->rule('email', 'require|email');
});

if (!$validate->scene('edit')->check($data)) {
    dump($validate->getError());
}
Copier après la connexion

Dans l'exemple ci-dessus, nous définissons d'abord un objet validateur $validate et définissons les règles de validation pour les champs email et mot de passe. Ensuite, nous utilisons la méthode scene pour spécifier la scène actuelle comme édition et spécifions les règles de validation pour le champ email. Enfin, nous appelons la méthode check pour vérifier. Si la vérification échoue, un message d'erreur est généré.

  1. Support multilingue

ThinkPHP6 prend en charge les messages d'erreur de validation multilingues. Nous pouvons y parvenir en ajoutant les messages d'erreur correspondants dans le fichier validate.php. Par exemple, si nous voulons ajouter des informations d'erreur chinoises au champ email, nous pouvons le configurer comme ceci :

return [
    'email' => [
        'require' => '邮箱必须填写!',
        'unique'  => '该邮箱已被注册!',
        'email'   => '邮箱格式不正确!'
    ]
];
Copier après la connexion

Ce fichier de configuration est enregistré dans /config/validate.php, et nous pouvons obtenir les informations d'erreur correspondantes via getError. méthode lors de la vérification.

  1. Fin

Ce qui précède correspond à l'utilisation de base de la validation des données dans ThinkPHP6, notamment : les règles de validation, les règles de validation personnalisées, la validation de scénarios et la prise en charge multilingue. L'utilisation de ces fonctions peut nous aider à vérifier plus facilement les données saisies par l'utilisateur et à garantir la sécurité et la légalité de l'application. J'espère que cet article sera utile à tous les développeurs !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal