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