ホームページ >PHPフレームワーク >ThinkPHP >ThinkPHP自動検証の修正機能の使い方

ThinkPHP自動検証の修正機能の使い方

WBOY
WBOY転載
2023-06-01 08:22:301107ブラウズ

1. ThinkPHP 自動検証の概要

ThinkPHP 自動検証は、フレームワークに組み込まれた一連の検証メカニズムであり、検証ルールとエラーを設定できます。モデル情報をプロンプトし、コントローラー内の実際のシナリオに基づいてデータ検証を実行します。自動検証を使用すると、面倒な手動検証プロセスを回避し、開発効率を向上させることができます。自動検証を使用すると、データが不正な場合にエラー メッセージを直接返すため、エラー処理コードを減らすことができます。

ThinkPHP 自動検証の基本的な使用法は次のとおりです:

  1. モデル内で検証ルールとエラー メッセージを定義します:

protected $_validate = array(
    // 验证用户名是否合法
    array('username','require','用户名不能为空!'),
    array('username','','该用户名已被注册',0,'unique'),
    array('username','/^[\w\-\x{4e00}-\x{9fa5}]{2,16}$/','用户名不合法!',0,'regex'),
    // 验证邮箱是否合法
    array('email','require','电子邮箱不能为空!'),
    array('email','','该邮箱已被注册',0,'unique'),
    array('email','email','电子邮箱格式不正确!',0,'regex'),
    // 验证密码是否合法
    array('password','require','密码不能为空!'),
    array('password','/^[\S]{6,32}$/','密码格式不正确!',0,'regex'),
);
  1. コントローラーでのデータ検証:

public function register(){
    if(IS_POST){
        $user = D('User');
        if(!$user->create()){
            $this->ajaxReturn(array('status'=>0,'msg'=>$user->getError()));
        }else{
            $user->add();
            $this->ajaxReturn(array('status'=>1,'msg'=>'注册成功!'));
        }
    }
}

上記のコードでは、$user->create() データ検証を使用します。検証が失敗した場合は、$user->getError() を使用してエラー情報を取得し、フロントエンド ページに返します。検証が成功すると、データがデータベースに追加されます。

2. ThinkPHP 自動検証の修正

実際の開発プロセスでは、一部のフィールドを更新する必要がある場合がありますが、この場合はデータも更新検証する必要があります。自動検証メカニズムを使用することもできますが、このメカニズムではすべての検証ルールが再度検証されるため、時間とリソースが無駄になります。

この問題を解決するために、ThinkPHP は現在のシナリオに従って検証する必要があるフィールドのみを検証できる自動検証変更機能を提供します。 password を検証せずにデータベースの username フィールドと email フィールドを変更する場合は、次のコードを使用できます:

public function update(){
    if(IS_POST){
        $user = D('User');
        $data = array(
            'id' => $_POST['id'],
            'username' => $_POST['username'],
            'email' => $_POST['email'],
        );
        if(!$user->create($data, 2)){
            $this->ajaxReturn(array('status'=>0,'msg'=>$user->getError()));
        }else{
            $user->save();
            $this->ajaxReturn(array('status'=>1,'msg'=>'更新成功!'));
        }
    }
}

In上記のコードでは、現在の更新シーンがであることを示す 2 番目のパラメーター 2 を渡しました。このように、create() メソッドでは、フレームワークは usernameemail のみを検証し、他のフィールドは検証しません。

以上がThinkPHP自動検証の修正機能の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。