ThinkPHP6 でバリデーターを使用する方法

王林
リリース: 2023-06-21 09:45:18
オリジナル
3115 人が閲覧しました

インターネットの継続的な発展に伴い、Web サイト開発に PHP を使用する人が増えています。 PHP ではフレームワークを使用することで開発効率を大幅に向上させることができ、ThinkPHP は非常に人気のあるフレームワークです。 ThinkPHP では、バリデーターは、ユーザーが送信したデータを検証してデータの正確性を確認するのに役立つ非常に重要なコンポーネントです。そこでこの記事では、ThinkPHP6 でバリデーターを使用する方法を紹介します。

1. バリデータとは

バリデータはデータを検証するために使用されるツールで、ユーザーが送信したデータの形式、長さ、合法性などを検証して、データの正確性。 ThinkPHP6 では、バリデーターは独立したコンポーネントであり、Validation クラスを継承することでカスタム バリデーターを実装できます。

2. バリデーターの基本的な使用法

ThinkPHP6 では、バリデーターの使用は非常に簡単です。まず、検証が必要なフィールドと対応する検証ルールを指定するバリデータ クラスを定義する必要があります。以下に例を示します。

<?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'         =>  '邮箱格式错误',
    ];
}
ログイン後にコピー

上記のコードでは、まず User という名前のバリデーター クラスを定義し、検証する必要があるフィールドと対応する検証ルールを指定します。たとえば、名前フィールドは空ではなく最大 25 文字であるというルールを満たす必要があり、電子メール フィールドは電子メール形式のルールを満たす必要があります。同時に、各検証ルールのエラー メッセージを保存する $message 配列も定義します。

バリデーター クラスを定義した後、コントローラーでこのバリデーターを使用してデータを検証できます。以下に例を示します。

<?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 {
            // 验证成功
        }
    }
}
ログイン後にコピー

上記のコードでは、まず検証が必要なデータを保存する $data 配列を定義します。次に、User validator オブジェクトをインスタンス化し、check メソッドを使用して $data 配列を検証します。検証が失敗した場合は、getError メソッドを使用してエラー メッセージを取得できます。検証が成功した場合は、他の操作を続行できます。

3. バリデーターの高度な使用法

基本的な検証ルールに加えて、ThinkPHP6 は、より複雑な検証ニーズを満たすための多くの高度なバリデーター関数も提供します。

  1. シナリオ検証

操作ごとに検証が必要なフィールドが異なる場合がありますが、現時点ではシナリオ検証を使用してこの問題を解決できます。 ThinkPHP6 では、バリデーター クラスでさまざまなシナリオを定義し、コントローラーで使用する必要がある現在のシナリオを指定できます。以下に例を示します。

<?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'],
    ];
}
ログイン後にコピー

上記のコードでは、追加と編集という 2 つのシナリオを定義します。このうち、追加シナリオでは名前フィールドと電子メール フィールドの検証が必要ですが、編集シナリオでは名前フィールドの検証のみが必要です。このようにして、コントローラーで使用する場合、使用する必要がある現在のシーンを指定できます。

$data = input('post.');
$validate = new User();
if (!$validate->scene('add')->check($data)) {
    // 验证失败
}
else {
    // 验证成功
}
ログイン後にコピー
  1. カスタム検証ルール

組み込みの検証ルールに加えて、特定のニーズに合わせて検証ルールをカスタマイズすることもできます。 ThinkPHP6 では、addRule メソッドを通じてカスタム検証ルールを追加できます。以下に例を示します。

<?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;
        }
    }
}
ログイン後にコピー

上記のコードでは、まず $email フィールドの検証ルールに checkEmail ルールを追加します。次に、checkEmail ルールのエラー メッセージが $message 配列に定義されます。最後に、validate クラスで checkEmail メソッドを定義して、カスタム検証ロジックを実装します (この例では、2 つの電子メール アドレス admin@example.com と superadmin@example.com は許可されません)。このように、データ検証を行う際には、自動的に checkEmail メソッドが呼び出され検証が行われます。

上記は、ThinkPHP6 のバリデーターの基本的な方法と高度な使用方法です。バリデータは、データの正確性を保証し、コードの可読性と保守性を向上させる非常に重要なコンポーネントです。実際の開発では、状況に応じてバリデータを柔軟に利用して開発を支援する必要があります。

以上がThinkPHP6 でバリデーターを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!