thinkphp自動検証問題
thinkphp登録時の自動検証に必要な機能検証はどこでしょうか?
書面による検証関数をどこに配置するか?
-----解決策---------
公式ドキュメントは非常に明確です:
ThinkPHP
5.3.15 自動検証
型チェックはデータベースレベルの検証のみのため、システムには自動検証機能も組み込まれています。データ オブジェクトの検証関数。モデルのビジネス ルール検証を完了します。ほとんどの場合、データ オブジェクトはフォームによって送信された $_POST データから作成されます。システムの自動検証機能を使用する必要がある場合は、Model クラスで $_validate 属性を定義するだけで済みます。これは、サポートされている検証要素の形式:
で構成される配列です。 PHP コード
配列 (検証フィールド、検証ルール、エラー プロンプト、検証条件、追加ルール、検証時間)
検証フィールド: 検証フィールドの名前検証が必要なフォーム フィールドですが、このフィールドは検証されません。データベース フィールドである必要があります。または、パスワードや確認コードの確認など、フォームの補助フィールドでも構いません。 (必須)
検証ルール: 検証用のルールは追加ルールと組み合わせる必要があります (必須)
プロンプト情報: 検証失敗後のプロンプト情報の定義 (必須)
検証条件: (オプション)
PHP コード
Model::EXISTS_TO_VAILIDATE または 0 (フィールドが存在するかどうかを確認します) (デフォルト)
Model: ; :
? 正規表現は検証に正規表現を使用し、以前に定義された検証ルールが正規表現であることを示します (デフォルト)
関数は関数検証を使用し、以前に定義された検証ルールは関数ですname
? メソッド検証を使用します。以前に定義された検証ルールは、現在の Model クラスのメソッドです
? フォーム内の 2 つのフィールドが同じであるかどうかを検証します。前の検証ルール
で定義された特定の値と等しいかどうかを検証します。以前の値が特定の範囲内にあるかどうかを検証します。定義された検証ルールは配列である必要があります
? unique は、フィールドの現在の値に基づいてデータベースにクエリを実行し、同じ値が存在するかどうかを判断します
また、直接使用できるいくつかの一般的な検証ルールも組み込まれています。 require フィールドは電子メール、URL URL アドレス、通貨、および数値である必要があります。 これらの検証ルールは直接使用できます。
検証時間: (オプション)
PHP コード
モデル:: MODEL_INSERT または新しいデータ追加時の 1 つの検証
モデル:: MODEL_UPDATE または 2 (データ編集時に検証する場合)
Model:: MODEL_BOTH または 3 (すべての場合に検証する場合) (デフォルト)
例:
PHP コード
protected $_validate = array(
array('verify','require','検証コードが必要です!'), //通常のコードを使用しますdefault Verify
array(name,'','アカウント名はすでに存在します!',0,'unique',1), // 追加時に名前フィールドが一意であるかどうかを検証します
array('value',array(1,2,3),'値の範囲が正しくありません!',2,'in'), // 値が空でない場合、範囲内であるかどうかを判定します
array('repassword','password','パスワードが間違っていることの確認',0,'confirm'), // 確認パスワードがパスワードと一致するかどうかを検証します
array('password ','checkPwd' ,'パスワード形式が間違っています',0,'function'), // パスワード形式を検証するカスタム関数
);
作成時システムの create メソッドを使用する データ検証操作は、データ オブジェクトの作成時に自動的に実行されます。 コード例:
PHP コード
$User = D("User "); // User オブジェクトをインスタンス化します
if (!$User->create()){
// 作成が失敗した場合は、検証が失敗しエラーが発生したことを意味しますメッセージが出力されます
exit($User-> ;getError());
}else{
// 検証後、他のデータ操作を実行できます
}
通常、各データテーブルに対応する検証ルールは比較的固定されていますが、特殊な状況下では検証ルールを動的に変更することができます。さまざまな条件で検証を満たすためのルール:
PHP コード
$User = D("User") // ユーザー オブジェクトをインスタンス化します
$validate = array(
array('verify ','require','確認コードが必要です! '), // 検証コードのみを確認する必要があります
$User-> setProperty("_validate",$validate); $User->create();
if (!$result){
// 作成に失敗した場合は、検証が失敗したことを意味し、エラー メッセージが出力されます
exit($ User->getError());
}else{
// 検証後、他のデータ操作を実行できます
}
------解決策------------------