ホームページ >PHPフレームワーク >ThinkPHP >ThinkPHP自動検証の修正機能の使い方
1. ThinkPHP 自動検証の概要
ThinkPHP 自動検証は、フレームワークに組み込まれた一連の検証メカニズムであり、検証ルールとエラーを設定できます。モデル情報をプロンプトし、コントローラー内の実際のシナリオに基づいてデータ検証を実行します。自動検証を使用すると、面倒な手動検証プロセスを回避し、開発効率を向上させることができます。自動検証を使用すると、データが不正な場合にエラー メッセージを直接返すため、エラー処理コードを減らすことができます。
ThinkPHP 自動検証の基本的な使用法は次のとおりです:
モデル内で検証ルールとエラー メッセージを定義します:
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'), );
コントローラーでのデータ検証:
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()
メソッドでは、フレームワークは username
と email
のみを検証し、他のフィールドは検証しません。
以上がThinkPHP自動検証の修正機能の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。