WEBプロジェクトの開発では、ユーザー登録、ニュース追加、商品管理など、プロジェクトのどのモジュールにもデータを追加する機能があります。そして、フォームを使用してデータを送信し、データを追加するときに、それがデータであるかどうかを確認します。はフロントエンドユーザーです。バックエンド管理者であっても、無効なデータや間違ったデータの入力を避けることはできないため、プロジェクトではフォームデータの検証が不可欠です。したがって、Web プロジェクトに参加したり、独自に開発したりしたことがある場合は、データを追加するときに、ユーザー名が存在するかどうか、検証コードが正しいかどうか、パスワードが一貫して入力されているかどうかなど、多くのデータ検証を必ず行うことになるでしょう。年齢が数字などの場合、データベースの大量検索や正規表現の記述などの問題は誰にとっても悩みの種です。
ThinkPHP には、モデルのビジネス ルール検証を完了するためのデータ オブジェクトの自動検証機能と自動補完機能が組み込まれており、ほとんどの場合、データ オブジェクトはフォームによって送信された $_POST データによって作成されます。システムの自動検証機能を使用する必要がある場合は、Model クラスに $_validate 属性を定義するだけで済みます。
$_validate 属性の検証要素の形式:
配列 (検証フィールド、検証ルール、エラー プロンプト、検証条件、追加ルール、検証時間)
*検証フィールド: フォーム フィールド名、注: このフィールドは必ずしもデータベースである必要はありませんフィールドは、パスワードや確認コードの確認など、フォームの補助フィールドにすることもできます。
*検証ルール: 検証対象のルールは、追加のルールと組み合わせる必要がある場合があります。
組み込みの検証ルール - 必須フィールド、電子メール アドレス、URL アドレス、通貨、数値などの検証ルールは直接使用できます。注: 他の検証ルールがある場合は、独自のメソッドを記述する必要があります
*プロンプト メッセージ: 検証が失敗した後のプロンプト メッセージに使用されます。
検証条件:
0 または Model::EXISTS_TO_VAILIDATE -- フィールドが存在するかどうかを検証します (デフォルト)
1 または Model::MUST_TO_VALIDATE -- 検証する必要があります
2 または Model::VALUE_TO_VAILIDATE -- 値が次の場合空ではありません 検証
追加ルール: 検証ルールと併用します
regex 検証に正規表現を使用し、以前に定義された検証ルールが正規表現であることを示します (デフォルト)
function 関数検証を使用します。以前に定義された検証ルールは関数ですname 注: システム関数またはカスタム関数
コールバックは、メソッド検証を使用します。以前に定義された検証ルールは、現在の Model クラスのメソッドです。 注: カスタム メソッド
confirm は、フォーム内の 2 つのフィールドが同じであるかどうかを検証します。以前に定義された検証ルールはフィールド名です
equal 前の検証ルール
in で定義された特定の値と等しいかどうかを検証します 特定の範囲内にあるかどうかを検証します 注: 前に定義した検証ルールは、 array
unique 一意であるかどうかを検証します。システムはフィールドの現在の値に基づいてデータベースにクエリを実行し、同じ値が存在するかどうかを判断します。 注: データベースが要求されます
検証時間:
1 またはモデル:: MODEL_INSERT -- データを追加するときに検証します
2 または Model:: MODEL_UPDATE -- 編集するときにデータを検証します
3 または Model:: MODEL_BOTH -- すべての場合に検証します (デフォルト)
$_validate 属性に慣れたら、特定のデータを検証するときに、例を使用して検証要素の書き方を分析する必要があります。
ThinkPHP を学習したことがある方は、マニュアルで自動検証の例をいくつか見たことがあるはずです。ここでは、一般的に使用されているものの、ここでは言及されていない学生がいる場合に使用できるように、一般的に使用される例のほとんどをまとめます。 、誰もがブレインストーミングを行って、データの自動検証のすべての方法を改善することができ、継続的に更新されます。
例:
protected $_validate = array(
array('username','require','Username is required!'), // データが空かどうか 注: デフォルトでは、すべての変更が検証されます
array(' username','','ユーザー名はすでに存在します! ',0,'unique',1), // ユーザー名フィールドを追加するときに、そのフィールドが一意であることを確認します
array('password','checkPwd' ,'パスワード形式が正しくありません',0,'function'), // パスワード形式は chenkPwd メソッドを使用してカスタマイズできます
array('repassword','password','パスワードが間違っていることを確認してください',0,'confirm '), // 検証 パスワードがパスワード
array('sex','array(0,1,2)','gender は 0,1,2',0,'in' と一致するかどうかを確認します), // データが範囲内であるかどうかを検証します
array('age','number','Agemust be anumber'), // データが数値であるかどうかを検証します
array('email ','email','メールの形式が正しくありません'), / / 組み込みの通常の確認メール
array('email','/^/w+([-+.]/w+)*@/w+( [-.]/w+)*/./w+([-.]/ w+)*$/','メールの形式が間違っています), // カスタマイズされた定期認証データ
array('mypage','url', '個人の URL 形式が間違っています'), // 組み込みの通常の検証 URL アドレス
array('verify','****','検証コードが間違っています',0,'equal'), // 検証データが特定の値と等しいかどうか 注: **** はランダムな検証コードにすることができます
array('salary','currency','Salary verify is unavailable','0'), // 組み込み通貨データの検証
);
ThinkPHP の自動検証機能は、ほぼすべてのデータ検証ニーズを満たすことができるため、ThinkPHP を使用してプロジェクトにデータを追加および検証する場合、自動検証機能と自動補完機能を使用することで、データ検証の面倒な問題を心配する必要はありません。オートコンプリート機能については次回説明とまとめを行い、ThinkPHPプロジェクトモジュールの制作やプロジェクト例を順次公開していきますのでよろしくお願いいたします。