ホームページ  >  記事  >  バックエンド開発  >  thinkphp 自動検証関連の問題

thinkphp 自動検証関連の問題

WBOY
WBOYオリジナル
2016-06-13 13:50:15941ブラウズ

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{

// 検証後、他のデータ操作を実行できます

}

------解決策------------------

ディスカッション
これは知っていますが、関数がどこに配置され、checkPwd 関数がどこに配置されているかがわかりません。
array('password','checkPwd','Theパスワードの形式が正しくありません', 0,'function'), // カスタム関数検証のパスワード形式
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。