テスト テーブルに登録されたフォームを確認します。
登録前にフォームを確認します。
ユーザー名が空でないことを 2 回確認します。パスワードは一貫している必要があり (同等性検証)、年齢は 18 ~ 50 歳である必要があり (範囲検証)、電子メール形式は定期的な検証である必要があります。
自動検証は、ThinkPHP モデル層によって提供されるデータ検証方法であり、create を使用してデータ オブジェクトを作成するときにデータ検証を自動的に実行できます。
データ検証では、データ型、ビジネスルール、セキュリティ判断などの検証操作を実行できます。
データ検証には 2 つの方法があります:
静的メソッド: モデル クラスの $_validate 属性を使用して検証ルールを定義します。
動的メソッド: モデル クラスの validate メソッドを使用して、自動検証ルールを動的に作成します。
どのような方法を使用する場合でも、検証ルールの定義は統一ルールであり、定義形式は次のとおりです。
array( array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]), array(验证字段2,验证规则,错误提示,[验证条件,附加规则,验证时间]), ...... );
検証フィールド (必須)
検証する必要があるフォーム フィールドの名前。このフィールドは必ずしもデータベース フィールドである必要はありませんが、パスワードや確認コードの確認など、フォームの補助フィールドである場合もあります。 。フィールドに関係のない個別の入力規則がある場合、入力フィールドは任意に設定できます (たとえば、有効期限の規則はフォーム フィールドに関係ありません)。フィールド マッピングが定義されている場合、ここでの検証フィールド名はフォーム フィールドではなく実際のデータ テーブル フィールドである必要があります。
検証ルール (必須)
検証のルールは追加のルールと組み合わせる必要があります。定期的な検証に追加のルールを使用する場合、システムにはいくつかのルールも組み込まれています-in ルール: よく使用される通常の検証ルール (必須フィールド、電子メール アドレス、URL アドレス、通貨、数値など) を検証ルールとして直接使用できます。
プロンプト情報 (必須)
検証失敗後のプロンプト情報の定義に使用されます
検証条件 (オプション)
次の状況が含まれます:
self::EXISTS_VALIDATE または 0、フィールドが存在するかどうかを確認します (デフォルト)
self : :MUST_VALIDATE または 1 検証する必要があります
self::VALUE_VALIDATE または 2 値が空でない場合に検証します
追加ルール (オプション)
#次のルールを含む検証ルールとともに使用します: #検証時間 (オプション)# #self::MODEL_BOTH または 3 すべてのケースで検証 (デフォルト)
ここでの検証時間に注意する必要があります。この 3 つのケースだけではありません。ビジネスに応じて検証できます。追加の検証時間を追加する必要があります。
モデルの自動検証ルールをモデル クラスで事前定義します (これを静的定義と呼びます)。 検証する場合は、テスト テーブルのモデルに検証条件を追加します。新しい testModel.class.php を作成し、次のようにモデル クラスに $_validate 属性を定義します。検証ルールを定義します。これは、create メソッドを使用してデータ オブジェクトを作成するときに自動的に呼び出すことができます:
<?php namespace Home\Model; use Think\Model; class testModel extends Model { //静态验证 protected $_validate = array( array('uid','require','用户名不能为空'), array('pwd','require','密码不能为空'), array('repwd','pwd','确认密码不正确',1,'confirm'), array('age','18,50','年龄必须在18-50岁之间',1,'between'), array('email','email','邮箱格式不正确'), ); }
テンプレート ZhuCe.html:
<?php namespace Home\Controller; use Home\Controller\CheckController; class ZhuCeController extends CheckController { function ZhuCe() { //静态验证,不能在后面直接显示,必须全部通过验证才能注册 $cw = ""; if(!empty($_GET)) { $cw = $_GET["cw"]; } if(empty($_POST)) { $this->assign("error",$cw); $this->display(); } else { $model = new \Home\Model\testModel(); //$model = D("test"); //动态验证可以用D方法 if(!$model->create()) { $e = $model->getError(); $url = "ZhuCe/cw/{$e}"; $this->error("注册失败!",$url,1); } else { $model->add(); }
ZhuCe メソッドをリクエストします:
2. 動的検証
動的検証を採用すると、同じモデルを運用する際に、状況に応じて異なる検証ルールを使用することができ、より柔軟になります。上記のようなさまざまなニーズ 静的検証方法は次のように変更できます。
<body> <form action="__ACTION__" method="post"> <div>用户名:<input type="text" name="uid" id="uid" /> </div><br /> <div>密码:<input type="text" name="pwd" id="pwd" /></div><br /> <div>确认密码:<input type="text" name="repwd" id="repwd" /> </div><br /> <div>年龄:<input type="text" name="age" id="age" /> </div><br /> <div>邮箱:<input type="text" name="email" id="email" /> </div><br /> <div>姓名:<input type="text" name="name" /></div><br /> <div><{$error}></div> <!--显示错误信息--> <input type="submit" value="注册" /> </form>
また、フォームの背後に直接エラー メッセージを表示することもできますが、これには ajax の使用が必要です。例として、ユーザー名が空でないことを確認します。 テンプレート ZhuCe.html 内:
<?php namespace Home\Controller; use Home\Controller\CheckController; class ZhuCeController extends CheckController { function ZhuCe() { if(empty($_POST)) { $this->display(); } else { //$model = new \Home\Model\testModel(); $model = D("test"); //动态验证可以用D方法 //动态验证 $rules = array( array('uid','require','用户名不能为空') ); //调用validate()加入验证规则 $r = $model->validate($rules)->create();//若验证失败返回false,成功返回注册的test表数组信息 //var_dump($r); if(!$r) { echo $model->getError(); //若验证失败则输出错误信息 } else { $model->add(); } } }
ZhuCe コントローラーに別の Yhm メソッドを作成します:
<script src="../../../../../jquery-1.11.2.min.js"></script> </head> <body> <form action="__ACTION__" method="post"> <div>用户名: <input type="text" name="uid" id="uid" /> <span id="ts"></span></div><br /> <div>密码: <input type="text" name="pwd" id="pwd" /> <span id="pts"></span></div><br /> <div>确认密码:<input type="text" name="repwd" id="repwd" /> <span id="rpts"></span></div><br /> <div>年龄: <input type="text" name="age" id="age" /> <span id="nts"></span></div><br /> <div>邮箱: <input type="text" name="email" id="email" /> <span id="ets"></span></div><br /> <div>姓名: <input type="text" name="name" /></div><br /> <!--<div><{$error}></div> --> <!--显示错误信息--> <input type="submit" value="注册" /> </form> </body> </html> <script type="text/javascript"> $(document).ready(function(e) { $("#uid").blur(function(){ var uid = $(this).val(); $.ajax({ url:"__CONTROLLER__/Yhm", <!--提交到方法,而不是页面--> data:{uid:uid}, <!--因为做的是表单验证,所以提交时要与表单name值一致,相当于提交表单 --> type:"POST", dataType:"TEXT", <!--返回数据类型要与ajaxReturn中的参数对应,TEXT对应eval--> success: function(data){ //alert(data); var str = ""; if(data.trim()=="OK") { str = "<span style='color:green'>"+data+"</span>"; } else { str = "<span style='color:red'>"+data+"</span>"; } $("#ts").html(str); } }); })
Request ZhuCe メソッド :
他の検証メソッドも同様で、対応するデータを対応するメソッドに送信し、対応する検証ルールを使用します。 推奨チュートリアル:「TP5」
以上がThinkPHP フレームワークのフォーム検証の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。