<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>

                ## 規則模式說明 1. 基于數據庫規則配置 2. 四中分類校驗 3. 支持擴展 4. 支持多記錄校驗 5. 適用小型表單校驗,主大表單校驗 6. 上手容易,未做擴展包發布 (可發布) ## 規則設計 數據表 ``` CREATE TABLE `yw_lrules` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `LR_KEY` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '基于規則獲取分組的KEY值', `LR_GROUP` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '內置分組類型[D,E,F,G]', `LR_COL` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '字段名稱', `LR_LABEL` varchar(80) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '標簽名', `LR_DESC` varchar(300) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '提示全稱(自定義)', `LR_REQUIRED` tinyint(4) NOT NULL DEFAULT '0' COMMENT '必填[1=是,0=否]', `LR_RULES` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '規則配置(混合模式,詳見文檔)', `LR_STATUS` tinyint(4) NOT NULL DEFAULT '1' COMMENT '狀態[1=啟用,0=禁用]', `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ``` 表字段說明: LR_KEY:外部值,主要用于規則篩選; LR_GROUP:系統內置分組類型 D: 系統內置規則 [自定義擴展規則] E: 正則,直接輸入正則規則 F:依賴模式 G: 全局模式 LR_COL:字段名稱,格式如 (單記錄:main.name,main.user.idcard,多記錄:file.*.size) LR_LABEL:字段提示名(如果沒有 desc 則系統內置提示) LR_DESC:自定義描述 LR_REQUIRED:字段是否必填 LR_RULES:規則集(稍后介紹) LR_STATUS:是否啟用 模式介紹: 數據格式如下: ``` $list = [ 'main' => [ 'zgjob02' => [ 'NAME' => '呵呵', 'ZGJOB020001' => '采購部門', 'ZGJOB020002' => '362330xxxxxxxxxxx', 'ZGJOB020003' => '0', ], ], 'zgjob03' => [ 'ZGJOB02030001' => '12', 'ZGJOB02030002' => '12.36', 'ZGJOB02030003' => '12.003', 'ZGJOB02030004' => '20.3', 'ZGJOB02030005' => '', ], 'zgjob08' => [ ['aaa' => '111.2112', 'bbb' => '333.12'], ['aaa' => '222.022', 'bbb' => '444'], ], ]; ``` ``` D 模式:主要用與系統內置規則和自定義規則 數據庫配置如下: LR_GROUP:D LR_COL:main.zgjob02.NAME LR_LABEL:姓名 LR_DESC:’’ LR_REQUIRED:1 LR_RULES:chs|minone:2|maxone:20 D 模式的規則配置說明:chs 表示只能屬于中文,minone 表示最小字符,maxone 表示最大字符,每個規則通過 “|” 分割,需要額外比較參數通過 “:” 攜帶,多個參數通過 “,” 分割,詳細規則后續說明 E 模式:主要用于直接的系統未內置的正則表達式 如:LR_RULES:/^-?[0-9]+(.[0-9]{1,2})?$/ 直接配置到數據庫中即可 F 模式:主要用于依賴必填模式,比如 A 如果必填必須 B 等于多少或其他 如:LR_RULES:({main.zgjob02.ZGJOB020003} <= 23 && !in_array (‘{zgjob03.ZGJOB02030001}’, [11,12,3])) || (‘{zgjob03.ZGJOB02030004}’ != ‘20’) 里面的參數值通過 “{}” 包裹,系統解析規則條件是否滿足判斷 G 模式:主要用于復雜邏輯判斷,系統無法支持,可通過自定義方式擴展自行編寫處理 如:LR_RULES:App\Http\Controllers\WF\Stateless\JishulinController|testValidate01 “|” 分割,第一個為類,第二個為方法,方法的參數第一個為校驗數據,第二個為外部帶入(后續說明) ``` ## 如何擴展規則 系統默認擴展類為:App\\Extend\\ExpandRules 如果不用系統自帶的,需要在 app 配置文件中,指定 rule=>’App\\Test’自己的擴展類名即可 示例如下: ``` <?php namespace App; class Test { // 參數說明 // val 被校驗值 // label 字段名 // desc 自定義描述 // limitVal 比較參數值 public function checkAaa($val, $label, $desc, $limitVal = null) { // 校驗通過 return true; // 不通過 return [ 'error' => 1, 'message' => '校驗不通過' ]; } } ``` 校驗成功需返回 “true”,校驗不通過需返回上述格式。其中 G 模式校驗返回如果成功返回格式為 \[‘error’ => 0\], 不通過一樣,注意兩者區別。 ## 系統內置規則 ``` // 規則如下配置 // 檢驗是否必填完整[$limitVal=1必填校驗,否則不做校驗] required => required:1 // 校驗中文漢字 chs => chs // 【解析中文字符為3個字符長度】判斷字符長度最小值不能小于$limitVal(不含等于) min => min:10 // 【解析中文字符為3個字符長度】判斷字符長度最大值不能大于$limitVal(不含等于) max => max:20 // 【解析中文字符為1個字符長度】判斷字符長度最小值不能小于$limitVal(不含等于) minone => minone:10 // 【解析中文字符為1個字符長度】判斷字符長度最大值不能大于$limitVal(不含等于) maxone => maxone:10 // 身份證規則校驗 idcard => idcard // 純數字,沒有+-符號及小數點等 number => number // 浮點數,最多含一位小數點 float1dot => float1dot // 浮點數,最多含兩位小數點 float2dot => float2dot // 浮點數,指定小數點位數 float => float:4 // 身份證號碼[正則校驗] idcardreg => idcardreg // 手機號碼格式 mobile => mobile // 只能是漢字、字母、數字和下劃線_及破折號- chsdash => chsdash // 只能是漢字、字母和數字 chsalphanum => chsalphanum // 是漢字、字母 chsalpha => chsalpha // 字母和數字,下劃線及破折號 alphadash => alphadash // 字母和數字 alphanum => alphanum // 純字母,含大小寫 alpha => alpha // 指定等于(限制為)某個值 equal => equal:120 equal => equal:sss // 判斷字符長度在兩者之間(中文算3個字符) length => length:10,30 // 判斷字符長度在兩者之間(中文算1個字符) lengthone => lengthone:10,30 // 判斷數字在兩者之間 between => between:10,90 // 判斷數字不在兩者之間 notbetween => notbetween:1,10 // 正則校驗在其中 regex => regex:/^-?[0-9]+(.[0-9]{1,2})?$/ // 正則校驗不在其中 notregex => notregex:/^-?[0-9]+(.[0-9]{1,2})?$/ // 是否是日期格式[yyyy-mm-dd HH:ii:ss,yyyy-mm-dd HH:ii][yyyy-mm-dd,yymmdd,yyyy/mm/dd] datetime => datetime // 日期指定格式校驗[ymd,y-m-d,y/m/d] // ymd,ymdhi,ymdhis // y-m-d,y-m-d-h-i,y-m-d-h-i-s // y/m/d,y/m/d/h/i,y/m/d/h/i/s dateformat => dateformat:ymd // 電話座機格式 phone => phone // 電話座機區號格式 phonearea => phonearea // 電話座機格式或手機號碼格式 tel => tel // 郵政編碼格式 post => post ```
                  <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>

                              哎呀哎呀视频在线观看