<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. 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

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人