<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ## 數據驗證 數據驗證也是系統改動比較大的一個地方。 模型中,可以定義`$validate`屬性設定數據驗證規則,當你需要寫入數據時(使用模型非db寫入),系統會自動驗證。這里并不是真的使用tp自帶的模型數據驗證(新版tp已經取消了模型驗證),同樣是使用實例化Validate對象來進行數據驗證。 先總覽下`$validate`格式: ~~~ protected $validate = [ //字段只有一個規則 '字段1' => [ 'rule' = > '驗證規則', 'message' => '錯誤信息提示', 'on' => 'add' ], //字段有一個或多個規則 '字段2' => [ [ 'rule' = > '驗證規則', 'message' => '錯誤信息提示', 'on' => 'edit' ], [ 'rule' = > '驗證規則' ] ] ]; ~~~ 以字段為鍵 => 規則數組 字段鍵下可以是一維數組(只有一個規則),也可以是二維數組(定義一個或多個規則)。 每個規則下可以有4個關鍵詞:rule、message、on ### message: 用于定義錯誤提示信息,如果沒有使用TP框架默認值處理 * * * * * ### on: 用于定義驗證場景,系統默認有的驗證場景有2個: add:添加場景 edit:修改場景 ~~~ [ 'on' => 'add' //只會在 新增 時驗證該規則 ] [ 'on' => 'edit' //只會在 更新 時驗證該規則 ] ~~~ 如果沒有定義on關鍵詞,表示 新增 和 更新 都會驗證該規則。 * * * * * ### rule: rule關鍵詞,每個規則都**必須**含有,用于定義當前驗證規則。 我們定義的數據驗證數組,最后系統還是自動會處理成TP能識別的那種格式,所以rule支持TP本身所有的驗證規則。 [TP內置規則傳送門](http://www.hmoore.net/manual/thinkphp6_0/1037629) #### 格式驗證類 require:驗證某個字段必須,例如: ~~~ [ 'rule' => 'require' ] ~~~ number 或者 integer :驗證某個字段的值是否為數字(采用filter_var驗證),例如: ~~~ [ 'rule' => 'number' ] ~~~ float:驗證某個字段的值是否為浮點數字(采用filter_var驗證),例如: ~~~ [ 'rule' => 'float' ] ~~~ boolean:驗證某個字段的值是否為布爾值(采用filter_var驗證),例如: ~~~ [ 'rule' => 'boolean' ] ~~~ email:驗證某個字段的值是否為email地址(采用filter_var驗證),例如: ~~~ [ 'rule' => 'email' ] ~~~ array:驗證某個字段的值是否為數組,例如: ~~~ [ 'rule' => 'array' ] ~~~ accepted:驗證某個字段是否為為 yes, on, 或是 1。這在確認"服務條款"是否同意時很有用,例如: ~~~ [ 'rule' => 'accepted' ] ~~~ date:驗證值是否為有效的日期,例如: ~~~ [ 'rule' => 'date' ] ~~~ alpha:驗證某個字段的值是否為字母,例如: ~~~ [ 'rule' => 'alpha' ] ~~~ alphaNum:驗證某個字段的值是否為字母和數字,例如: ~~~ [ 'rule' => 'alphaNum' ] ~~~ alphaDash:驗證某個字段的值是否為字母和數字,下劃線_及破折號-,例如: ~~~ [ 'rule' => 'alphaDash' ] ~~~ chs:驗證某個字段的值只能是漢字,例如: ~~~ [ 'rule' => 'chs' ] ~~~ chsAlpha:驗證某個字段的值只能是漢字、字母,例如: ~~~ [ 'rule' => 'chsAlpha' ] ~~~ chsAlphaNum:驗證某個字段的值只能是漢字、字母和數字,例如: ~~~ [ 'rule' => 'chsAlphaNum' ] ~~~ chsDash:驗證某個字段的值只能是漢字、字母、數字和下劃線_及破折號-,例如: ~~~ [ 'rule' => 'chsDash' ] ~~~ activeUrl:驗證某個字段的值是否為有效的域名或者IP,例如: ~~~ [ 'rule' => 'activeUrl' ] ~~~ url:驗證某個字段的值是否為有效的URL地址(采用filter_var驗證),例如: ~~~ [ 'rule' => 'url' ] ~~~ ip:驗證某個字段的值是否為有效的IP地址(采用filter_var驗證),例如: ~~~ [ 'rule' => 'ip' ] ~~~ dateFormat:驗證某個字段的值是否為指定格式的日期,例如: ~~~ [ 'rule' => ['dateFormat', 'y-m-d'] ] [ 'rule' => 'dateFormat:y-m-d' ] ~~~ #### 長度和區間驗證類 in:驗證某個字段的值是否在某個范圍,例如: ~~~ [ 'rule'=>['in', '1,2,3'] ] [ 'rule' => 'in:1,2,3' ] [ 'rule' => ['in', 1, 2, 3] ] ~~~ notIn:驗證某個字段的值是否在某個范圍,例如: ~~~ [ 'rule'=>['notIn', '1,2,3'] ] [ 'rule' => 'notIn:1,2,3' ] [ 'rule' => ['notIn', 1, 2, 3] ] ~~~ between:驗證某個字段的值是否在某個區間,例如: ~~~ [ 'rule'=>['between', '1,10'] ] [ 'rule' => 'between:1,10' ] [ 'rule' => ['between', 1, 10] ] ~~~ notBetween:驗證某個字段的值不在某個范圍,例如: ~~~ [ 'rule'=>['notBetween', '1,10'] ] [ 'rule' => 'notBetween:1,10' ] [ 'rule' => ['notBetween', 1, 10] ] ~~~ length:驗證某個字段的值的長度是否在某個范圍,例如: ~~~ [ 'rule'=>['length', '4,25'] ] [ 'rule' => 'length:4,25' ] [ 'rule' => ['length', 4, 25] ] ~~~ max:驗證某個字段的值的最大長度,例如: ~~~ [ 'rule'=>['max', '25'] ] [ 'rule' => 'max:25' ] ~~~ min:驗證某個字段的值的最小長度,例如: ~~~ [ 'rule'=>['min', '5'] ] [ 'rule' => 'min:5' ] ~~~ after:驗證某個字段的值是否在某個日期之后,例如: ~~~ [ 'rule'=>['after', '2016-3-18'] ] [ 'rule' => 'after:2016-3-18' ] ~~~ before:驗證某個字段的值是否在某個日期之前,例如: ~~~ [ 'rule'=>['before', '2016-3-18'] ] [ 'rule' => 'before:2016-3-18' ] ~~~ expire:驗證當前操作(注意不是某個值)是否在某個有效日期之內,例如: ~~~ [ 'rule'=>['expire', '2016-2-1', '2016-10-1'] ] [ 'rule' =>'expire:2016-2-1,2016-10-01' ] [ 'rule' =>['expire', '2016-2-1, 2016-10-1'] ] ~~~ allowIp:驗證當前請求的IP是否在某個范圍,例如: ~~~ [ 'rule'=>['allowIp', '114.45.4.55', '114.45.4.56'] ] [ 'rule' =>'allowIp:114.45.4.55,114.45.4.56' ] [ 'rule' =>['allowIp', '114.45.4.55, 114.45.4.56'] ] ~~~ denyIp:驗證當前請求的IP是否禁止訪問,例如: ~~~ [ 'rule'=>['denyIp', '114.45.4.55', '114.45.4.56'] ] [ 'rule' =>'denyIp:114.45.4.55,114.45.4.56' ] [ 'rule' =>['denyIp', '114.45.4.55, 114.45.4.56'] ] ~~~ eq :驗證是否等于某個值,例如: ~~~ [ 'rule'=>['eq', 100] ] [ 'rule' =>'=:100' ] //手冊上可以= 和same,測試報錯 ~~~ egt :驗證是否大于等于某個值,例如: ~~~ [ 'rule'=>['egt', 100] ] [ 'rule' =>'egt:100' ] ~~~ gt :驗證是否大于某個值,例如: ~~~ [ 'rule'=>['gt', 100] ] [ 'rule' =>'gt:100' ] ~~~ elt :驗證是否小于等于某個值,例如: ~~~ [ 'rule'=>['elt', 100] ] [ 'rule' =>'elt:100' ] ~~~ lt :驗證是否小于某個值,例如: ~~~ [ 'rule'=>['lt', 100] ] [ 'rule' =>'lt:100' ] ~~~ lt :驗證是否小于某個值,例如: ~~~ [ 'rule'=>['lt', 100] ] [ 'rule' =>'lt:100' ] ~~~ #### filter驗證 支持使用filter_var進行驗證,例如: ~~~ 'rule' =>'filter:validate_ip' ~~~ #### 正則驗證 支持使用正則驗證,例如: ~~~ 'rule' =>['regex', '/^(yes|on|1)$/i'] ~~~ #### 其他 unique:table,field,except,pk:驗證當前請求的字段值是否為唯一的,例如: ~~~ 'rule' => ['unique', 'user'] ~~~ requireIf:field,value:驗證某個字段的值等于某個值的時候必須,例如: ~~~ 'rule' => 'requireIf:account,1' ~~~ requireWith:field:驗證某個字段有值的時候必須,例如: ~~~ 'rule' => 'requireWith:account' ~~~ #### 自定義驗證規則 call : 通過自定義模型方法回調驗證 ~~~ 'rule' => ['call', '方法名'] ~~~ eg:比如欄目模型中: ~~~ protected $_validate =[ 'parent_id' => [ [ 'rule' =>['egt', 1], 'message' => '請選擇父級導航' ], [ 'rule' => array('call', 'checkParent'), 'on' => 'edit' ] ] ]; public function checkParent($value, $rule, $data) { if ($value == $data['id'] || in_array($value, (array)menu('children', $data['id']))) { return '不能選擇本欄目以及其子欄目做為父級'; } return true; } ~~~ 你需要自己準備一個方法來進行自定義驗證規則,驗證方法可以傳入的參數共有5個(后面三個根據情況選用),依次為: * 驗證數據 * 驗證規則 * 全部數據(數組) return true,表示驗證通過; return 字符串,表示驗證失敗返回錯誤提示信息 * * * * * ### 不驗證數據 ~~~ model('User')->isValidate(false)->save($data); ~~~ 這樣將不會驗證數據,直接寫入。 ### 獲取錯誤信息 ~~~ $user = model('User'); $rslt = $user->save($data); if (!$rslt) { pr($user->getError()); } ~~~ * * * * * 當然,驗證我們也可以完全安裝TP手冊來,不使用系統定義的`$validate`屬性。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看