ThinkPHP の自動検証と検証ルールの詳細な説明

angryTom
リリース: 2020-03-23 14:54:22
転載
5876 人が閲覧しました

この記事では、thinkphp の自動検証の方法と検証ルールを詳しく紹介しますので、thinkphp を学習している友人の参考になれば幸いです。

ThinkPHP の自動検証と検証ルールの詳細な説明

ThinkPHP の自動検証と検証ルールの詳細説明

ThinkPHP には、データ オブジェクトの自動検証機能が組み込まれており、完了することができます。モデルのビジネス ルールが検証されます。自動検証はデータ オブジェクトに基づいており、ほとんどの場合、データ オブジェクトは $_POST フォーム (絶対的なものではありません) に基づいて作成されます。

基本的な自動検証機能には、必須フィールド、電子メール形式、一意性、URL アドレス、数値、2 つのフィールドが同じかどうか、特定の値に等しいかどうかなどが含まれます。

システムの自動検証機能を使用するには、対応する Model クラスに $_validate 属性 (複数の検証要素で構成される配列) を定義するだけです。構文は次のとおりです:

protected $_validate = array(
    array(验证字段,验证规则,错误提示[,验证条件][,附加规则][,验证时间])
};
ログイン後にコピー

(推奨チュートリアル:thinkphp チュートリアル)

#エラー メッセージ必須。検証が失敗した場合のプロンプトメッセージ。 #検証条件追加ルール#オプション。含まれるもの: 自動検証の例
ThinkPHP 自動検証形式の説明:
検証要素説明
検証フィールド必須。検証する必要があるフォーム フィールドの名前。このフィールドは必ずしもデータベース フィールドである必要はなく、検証コードなどのフォームの補助フィールドである場合もあります。
検証ルール必須。検証するルールは、追加のルールと組み合わせて使用​​する必要があります。
オプション。含まれるもの: Model::EXISTS_TO_VAILIDATE または 0: フィールドが存在するかどうかを検証します (デフォルト)
  1. Model::MUST_TO_VALIDATE または 1:
  2. Model::VALUE_TO_VAILIDATE または 2 を検証する必要があります: 値が空でない場合に検証します
オプション。次のような検証ルールと組み合わせて使用​​します。 regex: 検証に正規表現を使用し、以前に定義された検証ルールが正規表現 (デフォルト) であることを示します。
  1. unique: システムの一意性を検証します。フィールドに基づいて検証されます 現在の値はデータベースにクエリを実行し、同じ値が存在するかどうかを判断します
  2. confirm: フォーム内の 2 つのフィールドが同じであるかどうかを検証します。前に定義した検証ルールはフィールド名 ## です
  3. #equal: 前の検証ルールで定義された特定の値と等しいかどうかを検証します。
  4. in: 特定の範囲内にあるかどうかを検証します。以前に定義された検証ルールは配列である必要があります。
  5. function: 関数検証を使用します。以前に定義された検証ルールが関数名であることを示します。
  6. callback: メソッド検証を使用します。以前に定義された検証ルールは、現在のモデル クラスのメソッドです。
#検証時間
Model:: MODEL_INSERT または 1: データ追加時に検証 Model:: MODEL_UPDATE または 2: データ編集時に検証
  1. Model:: MODEL_BOTH または 3: 検証すべての場合 (デフォルト)

次の例では、記事のタイトルがタイトルが既に存在するかどうかを入力して確認する必要があります:

class ArticleModel extends Model{
    protected $_validate = array(
        array('title','require','标题不能为空!'),
        array('title','','标题已经存在!',0,'unique',1),
    };
}
ログイン後にコピー
操作では、create メソッドを使用してデータ オブジェクトを作成するときに、データ検証操作が自動的に実行されます (POST が処理のためにフォームを送信するとき)。 :

$Article = D("Article");
if (!$Article->create()){
    // 如果创建失败,表示验证没有通过(注:可能原因之一)输出错误提示信息
    exit($Article->getError());
}else{
    // 验证通过,继续下一步流程如将数据写入数据表
}
ログイン後にコピー

System 次のような一般的な定期検証ルールが組み込まれています: require (必須)、email (電子メール形式)、url (URL アドレス)、currency (通貨)、number (数値)、qq ( QQナンバー)、英語(英字)、そのまま使用可能です。

ユーザー エクスペリエンス上の理由から、$Article->getError() によって返されるエラー メッセージは通常、Ajax モードで返されます。詳細については、「ThinkPHP Ajax」を参照してください。

独自の検証ルールを定義する

組み込みの検証ルールが検証要件を満たせない場合は、生年月日を要求するなど、独自の検証ルールを定義できます。 2000- 1-1 形式の入力:

array('birthday','/^d{4}-d{1,2}-d{1,2}$/','出生年月格式错误!'),
ログイン後にコピー
その他の関連チュートリアルについては、PHP 中国語 Web サイト

に注目してください。

以上がThinkPHP の自動検証と検証ルールの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート