<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            php語言

            ThinkPHP中create()方法自動驗證表單信息

            時間:2025-01-26 03:00:54 php語言 我要投稿
            • 相關推薦

            ThinkPHP中create()方法自動驗證表單信息

              文章主要為大家詳細介紹了ThinkPHP中create()方法自動驗證表單信息,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

              自動驗證是ThinkPHP模型層提供的一種數據驗證方法,可以在使用create創建數據對象的時候自動進行數據驗證。

              原理:

              create()方法收集表單($_POST)信息并返回,同時觸發表單自動驗證,過濾非法字段,

              在控制器中使用create()方法,(返回值為true/false),會自動觸發模型類中的$_validate屬性(為父類Model中的方法,在子類Model中重寫),在$_validate中自定義驗證規則(驗證規則下面會詳細說明),當create()方法沒有數據即返回值為false時,通過$xxx對象->getError();獲取并返回錯誤信息!

              使用自動驗證必須按照以下規則格式定義:

              protected $_validate = array(

              array(驗證字段1,驗證規則,錯誤提示,[驗證條件,附加規則,驗證時間]),

              array(驗證字段2,驗證規則,錯誤提示,[驗證條件,附加規則,驗證時間]),

              ......

              );

              其中驗證字段,驗證規則,錯誤提示是必填項,驗證條件,附加規則,驗證時間為可選!

              驗證字段(必填):表單字段。

              驗證規則(必填):require 字段必須、email 郵箱、url URL地址、number 數字,還可以結合附加規則使用。

              錯誤提示(必填):驗證失敗時返回的提示信息。

              驗證條件(可選):有0,1,2三種,0:_POST中存在的字段驗證,默認;1:驗證規則定義了就必須驗證;2:值不為空時驗證.

              附加規則:

              驗證時間(可選):共有1,2,3三種,1:新增數據時候驗證;2:編輯數據時候驗證;3:全部情況下驗證(默認);也可以可以根據業務需要增加其他的驗證時間

              下面附上代碼:以注冊為例

              前臺頁面比較簡單,代碼就不貼出來了,下面是前臺注冊界面截圖

              控制器代碼:

              //注冊

              public function register(){

              $user = new \Model\UserModel();

              //兩個邏輯:收集,展示

              if (!empty($_POST)) {

              //create()方法收集表單($_POST)信息并返回,同時觸發表單自動驗證,過濾非法字段

              $date = $user->create();

              //通過create()方法的返回值$date判斷驗證是否成功

              if ($date) { //返回實在數據的時候才進行添加

              //implode()把數組變為字符串

              $date['user_hobby'] = implode(',', $date['user_hobby']);

              $info = $user->add($date);

              if ($info) {

              //跳轉首頁

              $this->redirect('Index/index');

              }

              }else{

              //把錯誤信息分配到前臺模板

              $error = $user->getError();

              $this->assign('error',$error);

              }

              }

              //調用view視圖

              $this->display();

              }

              模型類代碼:

              class UserModel extends Model{

              //是否批量處理驗證,批量獲取全部的錯誤驗證信息

              protected $patchValidate = true; //默認為false

              //自動驗證定義

              protected $_validate = array(

              //array(字段,驗證規則,錯誤提示,驗證條件,附加規則,驗證時間)

              //①用戶名驗證,不能為空

              array('username','require','用戶名不能為空'),

              array('username','','該用戶名已經被占用','0','unique'),

              //②密碼驗證,不為空

              array('password','require','密碼不能為空'),

              //③驗證確認密碼,必須填寫,與密碼保持一致

              array('password2','require','確認密碼必須填寫'),

              array('password2','password','兩次密碼保持一致',0,'confirm'),

              //④郵箱驗證

              array('user_email','email','郵箱格式不正確',2),

              //⑤qq驗證,數字組成,5-12位

              array('user_qq','number','qq必須是數字'),

              array('user_qq','5,12','位數在5-12位之間',0,'length'),

              //⑥學歷驗證,必須選一個

              array('user_xueli','2,5','學位必須選擇一個',0,'between'),

              //⑦愛好驗證,必須選擇二個以上

              //因為愛好返回的是數組,附加規則中沒有可以直接用的規則,所以需自定義方法,用callback方法驗證

              array('user_hobby','check_hobby','愛好必須選兩項或以上',1,'callback'),

              );

              //定義方法進行愛好驗證

              //參數$arg代表被驗證的表單信息

              function check_hobby($arg)

              {

              //判斷數組長度是否大于2

              if (count($arg)<2) {

              return false; //會自動輸出驗證錯誤信息

              }

              return true;

              }

              }

              把驗證的錯誤信息在模板中給展示出來(部分代碼)

              <td style="width:13%; text-align: right;">

              <label for="User_username" class="required">用戶名

              <span>*</span></label>

              </td>

              <td style="width:87%;">

              <input class="inputBg" size="25" name="username" id="User_username" type="text" value="" />

              <span style="color:red;"><{$error.username|default:""}></span>

              </td>

            【ThinkPHP中create()方法自動驗證表單信息】相關文章:

            ThinkPHP中自動驗證07-26

            ThinkPHP表單自動提交驗證實例教程10-08

            PHP 表單驗證方法11-01

            php中tp驗證表單與自動填充函數代碼07-16

            常用表單驗證的js方法11-12

            兩種實現表單驗證的javascript方法09-19

            PHP中Yii框架之表單驗證規則06-08

            使用php自動提交表單的方法11-16

            php編程必學之表單驗證10-31

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看