Thinkph6中常用的驗證方式實例

我們在使用thinkphp6中的數據驗證時,如果使用不多的話,會經常遇到校驗不對,在這個小問題上折騰很多,索引就不用了。我還不如直接寫if條件來的迅捷!!

下面把常見的校驗方法進行一下整理:


protected $regex = ['float_two' => '/^[0-9]+(.[0-9]{1,2})?$/', //兩位小數點'phone' => '/^1[3456789]\d{9}$/', //手機號
];/*** 定義驗證規則* 格式:'字段名'    =>    ['規則1','規則2'...]** @var array*/protected $rule = ['id'        => 'require|gt:0', //大于0'phone'     => 'require|regex:phone', //手機號'type'      => ['require', 'In:0,1,2'], //必須是0、1、2中的一個'order_id'      => ['require','length'=>'1,32','alphaNum'], //1-32位字母數字'total_price'   => ['require','float'], //金額,浮點數'sort'          => 'require|number', //數字'region_info'   => 'array', //數組'sort'          => 'number' //數字'account'       => ['require', 'alphaDash'], //字母數字下劃線,破折號'real_name|管理員姓名' => 'require|max:16','account|賬號' => 'require|max:16|min:4','phone|聯系電話' => 'isPhone', //自定義函數'image|分類圖片' => 'max:128','is_banner|是否為Banner' => 'require|integer''status|狀態' => 'require|in:0,1','phone' => 'require|number|mobile','integral_user_give|邀請好友贈送積分' => 'require|integer|>=:0','integral_community_give|發布種草可獲得積分' => 'require|number|egt:0|elt:9999','undelives|不配送區域信息'=>'requireIf:undelivery,1|Array|undelive', //這是哪個高手寫的,這么復雜,我也沒看懂'full_reduction|滿贈金額' => 'requireIf:send_type,1|float|>=:0','coupon_time|有效期限' => 'requireIf:coupon_type,0|integer|>:0',];//定義不同驗證的提示信息,這個很簡單,一般不會出錯!protected $message = ['meal_id.require'     => '請傳入套餐id','meal_id.number'      => '套餐id必須為數字','price.require'       => '請填寫套餐金額','num.require'         => '請填寫購買數量','num.number'          => '購買數量必須為數字','type.require'        => '請填寫購買套餐類型'];//校驗手機號 , 這里的data指的是全部的參數,自定義的可以和其它參數做比較protected function isPhone($val,$data){if ($val && !preg_match('/^1[3456789]{1}\d{9}$/', $val))return '請輸入正確的手機號';elsereturn true;}//驗證場景 ,變量的方式,這里說明 login只驗證密碼和賬號, phone只驗證手機號protected $scene = ['login' => ['password', 'account'],'phone' => ['phone']];//函數的方法public function sceneSave(){return $this->only(['realname','phone','address','province','city','district']);}

如何使用:

try{$this->validate(TrailValidate::class)->scene('apply')->check($data);
}catch(\Exception $e){return app('json')->fail($e->getMessage());
}

TrailValidate::class 是你的校驗類,放哪里自己定。

scene('apply')? ,apply是你的場景。

check($data) ;? $data是你要校驗的數據。

注意:驗證場景有兩種寫法以,一種是數組,一種是函數。

當使用函數時必須是: scene+場景名(Save) 首字母大寫,如果直接寫場景名是識別不到的!。

以上rule匯總自多個開源系統,用來做備忘和大家共勉!

如果你有其它想法我們可以共同探討!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916945.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916945.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916945.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

分享一個FPGA寄存器接口自動化工具

FPGA模塊越寫越多,規范性和可移植性卻堪憂。要是有一個工具可以根據模塊接口描述文件生成verilog和c頭文件就好了。苦苦搜尋找到了幾款免費的工具,SystemRDL、cheby和rggen。筆者學習了下cheby和reksio,reksio是gui版的cheby,這是…

小程序中事件對象的屬性與方法

在小程序中,事件處理函數的參數為事件對象(通常命名為 e),包含了事件相關的詳細信息(如事件類型、觸發元素、傳遞的數據等)。事件對象的屬性和方法因事件類型(如點擊、輸入、觸摸等)…

使用寶塔“PostgreSQL管理器”安裝的PostgreSQL,如何設置遠程連接?

安裝 PostgreSQL 使用寶塔“PostgreSQL管理器”安裝PostgreSQL,版本可以根據自己的需求來選擇,我這里使用的是16.1 創建數據庫 根據下圖所示步驟創建數據庫,其中 “訪問權限”一定要選擇“所有人”啟用遠程連接設置允許所有 IP 連接 listen_a…

論文:M矩陣

M矩陣是線性代數中的一個概念,它是一種特殊類型的矩陣,具有以下性質:非負的非對角線元素:矩陣的所有非對角線元素都是非負的,即對于矩陣MMM中的任意元素mijm_{ij}mij?,當i≠ji\neq jij時,有m…

跳躍表可視化深度解析:動態演示數據結構核心原理

跳躍表可視化深度解析:動態演示數據結構核心原理 一、跳躍表基礎概念與核心優勢 跳躍表(SkipList)是一種基于多層索引鏈表的數據結構,通過概率平衡實現高效的插入、刪除和查找操作。其核心優勢體現在: ?時間復雜度優…

《Sentinel服務保護實戰:控制臺部署與SpringCloud集成指南》

sentinel 介紹 Sentinel是阿里巴巴開源的一款服務保護框架,目前已經加入SpringCloudAlibaba中。官方網站: home | Sentinel Sentinel 的使用可以分為兩個部分: 核心庫(Jar包):不依賴任何框架/庫,能夠運行…

IBM Watsonx BI:AI賦能的下一代商業智能平臺

產品概覽 IBM Watsonx BI 是基于 watsonx 企業級 AI 與數據平臺 構建的智能分析解決方案,專為現代化企業打造。它深度融合人工智能技術,突破傳統 BI 工具的限制,通過自動化數據洞察、自然語言交互和預測分析,幫助企業在復雜數據環…

Python實現GO鵝優化算法優化GBRT漸進梯度回歸樹回歸模型項目實戰

說明:這是一個機器學習實戰項目(附帶數據代碼文檔),如需數據代碼文檔可以直接到文章最后關注獲取 或者私信獲取。 1.項目背景 隨著大數據和人工智能技術的快速發展,回歸預測在金融、氣象、能源等多個領域中扮演著至關…

深度學習計算(深度學習-李沐-學習筆記)

層和塊 單一輸出的線性模型:單個神經網絡 (1)接受一些輸入; (2)生成相應的標量輸出; (3)具有一組相關 參數(parameters),更新這些參數…

leetcode熱題——搜索二維矩陣Ⅱ

目錄 搜索二維矩陣Ⅱ 題目描述 題解 解法一:暴力搜索 C 代碼實現 復雜度分析 解法二:二分查找 C 代碼實現 復雜度分析 解法三:Z字形查找 算法核心思想 算法步驟詳解 C 代碼實現 復雜度分析 搜索二維矩陣Ⅱ 題目描述 編寫一個…

牛客 - 數組中的逆序對

描述 在數組中的兩個數字,如果前面一個數字大于后面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數P。并將P對1000000007取模的結果輸出。 即輸出P mod 1000000007 數據范圍: 對于 50% 的數據, size≤104 s…

Linux 日志管理與時鐘同步詳解

Linux 日志管理與時鐘同步詳解 一、日志管理 1. 日志服務概述 Linux 系統中主要有兩種日志服務,分別負責臨時和永久日志的管理: systemd-journald:存儲臨時日志,服務器重啟后日志會丟失,無需手動配置rsyslog&#xff1…

個人如何做股指期貨?

本文主要介紹個人如何做股指期貨?個人參與股指期貨交易需要遵循一定的流程和規則,同時需充分了解其高風險、高杠桿的特點,并做好風險管理。個人如何做股指期貨?一、了解股指期貨基礎股指期貨是以股票價格指數為標的物的金融期貨合…

設計模式-單例模式 Java

模式概述 單例模式(Singleton Pattern)是設計模式中最基礎但應用最廣泛的創建型模式之一,確保一個類僅有一個實例,并提供一個全局訪問點。這種模式在需要全局唯一對象的場景中至關重要,如配置管理、線程池、數據庫連接…

RFID 系統行業前沿洞察:技術躍遷與生態重構

在物聯網與人工智能深度融合的時代,RFID(射頻識別)系統正經歷從 “單品識別工具” 到 “智能決策中樞” 的范式轉變。這一技術憑借其非接觸式數據采集、環境適應性強、全生命周期追溯等特性,在醫療、制造、農業、環保等領域引發連…

實現implements InitializingBean, DisposableBean 有什么用

在 Spring 框架中,實現 InitializingBean 和 DisposableBean 接口用于管理 Bean 的生命周期回調,分別控制 Bean 的初始化后和銷毀前行為。具體作用如下:1. InitializingBean 接口public interface InitializingBean {void afterPropertiesSet…

GitLab 18.2 發布幾十項與 DevSecOps 有關的功能,可升級體驗【一】

沿襲我們的月度發布傳統,極狐GitLab 發布了 18.2 版本,該版本帶來了議題和任務的自定義工作流狀態、新的合并請求主頁、新的群組概覽合規儀表盤、下載安全報告的 PDF 導出文件、中心化的安全策略管理(Beta)等幾十個重點功能的改進…

如何快速把Clickhouse數據同步到Mysql

直接使用Clickhouse官方支持的Mysql引擎表的方式! 一、首先創建Mysql引擎表: CREATE TABLE saas_analysis.t_page_view_new_for_write (id Int64,shop_id Nullable(Int64),session_id Nullable(String),client_id Nullable(String),one_id Nullable(Str…

Kafka 重復消費與 API 冪等消費解決方案

Kafka 是一個高性能的分布式消息系統,但消費者重啟、偏移量(offset)未正確提交或網絡問題可能導致重復消費。API 冪等性設計則用于防止重復操作帶來的副作用。本文從 Kafka 重復消費和 API 冪等性兩個方面提供解決方案,重點深入探…

win11推遲更新

1、按住WINR2、輸入以下命令:reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v FlightSettingsMaxPauseDays /t reg_dword /d 10000 /f3、點擊確定4、打開搜索框5、在搜索框里邊輸入更新,選擇檢查更新6、在暫停…