Maison  >  Article  >  cadre php  >  Comment utiliser les validateurs dans ThinkPHP6

Comment utiliser les validateurs dans ThinkPHP6

王林
王林original
2023-06-21 09:45:183113parcourir

Avec le développement continu d'Internet, de plus en plus de personnes commencent à utiliser PHP pour le développement de sites Web. En PHP, l'utilisation de frameworks peut considérablement améliorer l'efficacité du développement, et ThinkPHP est un framework très populaire. Dans ThinkPHP, le validateur est un composant très important qui peut nous aider à vérifier les données soumises par les utilisateurs pour garantir l'exactitude des données. Cet article expliquera donc comment utiliser les validateurs dans ThinkPHP6.

1. Qu'est-ce qu'un validateur

Un validateur est un outil utilisé pour vérifier les données. Il peut vérifier le format, la longueur, la légalité, etc. des données soumises par les utilisateurs pour garantir l'exactitude des données. Dans ThinkPHP6, le validateur est un composant indépendant et vous pouvez implémenter un validateur personnalisé en héritant de la classe Validation.

2. Utilisation de base du validateur

Dans ThinkPHP6, l'utilisation du validateur est très simple. Tout d'abord, nous devons définir une classe de validation pour spécifier les champs qui doivent être validés et les règles de validation correspondantes. Voici un exemple :

<?php

namespace appindexalidate;

use thinkValidate;

class User extends Validate
{
    protected $rule = [
        'name'  =>  'require|max:25',
        'email' =>  'email',
    ];

    protected $message = [
        'name.require'  =>  '名称不能为空',
        'name.max'      =>  '名称最多不能超过25个字符',
        'email'         =>  '邮箱格式错误',
    ];
}

Dans le code ci-dessus, nous définissons d'abord une classe de validateur nommée User, spécifiant les champs qui doivent être validés et les règles de validation correspondantes. Par exemple, le champ de nom doit respecter les règles de non-vide et contenir jusqu'à 25 caractères, et le champ de courrier électronique doit respecter les règles de format de courrier électronique. En même temps, nous définissons également un tableau $message pour stocker le message d'erreur de chaque règle de vérification.

Après avoir défini la classe du validateur, nous pouvons utiliser ce validateur dans le contrôleur pour vérifier les données. Voici un exemple :

<?php

namespace appindexcontroller;

use thinkController;
use appindexalidateUser;

class Index extends Controller
{
    public function index()
    {
        $data = [
            'name'  =>  'Tom',
            'email' =>  'test@example.com',
        ];

        $validate = new User();

        if (!$validate->check($data)) {
            dump($validate->getError());
            // 验证失败
        }
        else {
            // 验证成功
        }
    }
}

Dans le code ci-dessus, nous définissons d'abord un tableau $data pour stocker les données qui doivent être vérifiées. Ensuite, nous instancions un objet validateur User et utilisons la méthode check pour vérifier le tableau $data. Si la vérification échoue, vous pouvez utiliser la méthode getError pour obtenir le message d'erreur. Si la vérification réussit, vous pouvez continuer avec d'autres opérations.

3. Utilisation avancée des validateurs

En plus des règles de validation de base, ThinkPHP6 fournit également de nombreuses fonctions de validation avancées pour répondre à des besoins de validation plus complexes.

  1. Vérification de scénario

Parfois, les champs qui doivent être vérifiés pour différentes opérations peuvent être différents. À l'heure actuelle, nous pouvons utiliser la vérification de scénario pour résoudre ce problème. Dans ThinkPHP6, nous pouvons définir différents scénarios dans la classe validateur et spécifier le scénario actuel qui doit être utilisé dans le contrôleur. Voici un exemple :

<?php

namespace appindexalidate;

use thinkValidate;

class User extends Validate
{
    protected $rule = [
        'name'  =>  'require|max:25',
        'email' =>  'email',
    ];

    protected $message = [
        'name.require'  =>  '名称不能为空',
        'name.max'      =>  '名称最多不能超过25个字符',
        'email'         =>  '邮箱格式错误',
    ];

    protected $scene = [
        'add'   =>  ['name', 'email'],
        'edit'  =>  ['name'],
    ];
}

Dans le code ci-dessus, nous définissons deux scénarios, à savoir ajouter et modifier. Parmi eux, le scénario d'ajout nécessite la vérification des champs de nom et d'e-mail, tandis que le scénario de modification nécessite uniquement la vérification du champ de nom. De cette façon, lorsqu'il est utilisé dans le contrôleur, vous pouvez spécifier la scène actuelle qui doit être utilisée.

$data = input('post.');
$validate = new User();
if (!$validate->scene('add')->check($data)) {
    // 验证失败
}
else {
    // 验证成功
}
  1. Règles de validation personnalisées

En plus des règles de validation intégrées, nous pouvons également personnaliser les règles de validation pour répondre à des besoins spécifiques. Dans ThinkPHP6, nous pouvons ajouter des règles de validation personnalisées via la méthode addRule. Voici un exemple :

<?php

namespace appindexalidate;

use thinkValidate;

class User extends Validate
{
    protected $rule = [
        'email' =>  'email|checkEmail',
    ];

    protected $message = [
        'email.email'  =>  '邮箱格式错误',
        'email.checkEmail'  =>  '邮箱不允许注册',
    ];

    protected function checkEmail($value, $rule, $data)
    {
        if (in_array($value, ['admin@example.com', 'superadmin@example.com'])) {
            return false;
        }
        else {
            return true;
        }
    }
}

Dans le code ci-dessus, nous ajoutons d'abord une règle checkEmail aux règles de validation du champ $email. Ensuite, le message d'erreur de la règle checkEmail est défini dans le tableau $message. Enfin, une méthode checkEmail est définie dans la classe validate pour implémenter notre logique de vérification personnalisée (dans cet exemple, les deux adresses email admin@example.com et superadmin@example.com ne sont pas autorisées). De cette façon, lors de la vérification des données, la méthode checkEmail sera automatiquement appelée pour vérification.

Ce qui précède présente les méthodes de base et l'utilisation avancée des validateurs dans ThinkPHP6. Le validateur est un composant très important qui peut garantir l'exactitude de nos données et également améliorer la lisibilité et la maintenabilité du code. Dans le développement réel, nous devons utiliser le validateur de manière flexible en fonction de la situation réelle pour faciliter notre travail de développement.

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!

Déclaration:
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