摘要:驗(yàn)證的字段值必須與參數(shù)字段的值不同。第一次驗(yàn)證失敗后停止運(yùn)行驗(yàn)證規(guī)則。只是停止這個(gè)字段的驗(yàn)證,其它字段不影響。兩次輸入的密碼不一致新密碼與舊密碼不能一致檢查經(jīng)過身份驗(yàn)證的用戶確定其是否具有更新給定資源的權(quán)限。
修改密碼
Confirmed
如果要驗(yàn)證的字段是 password,輸入中必須存在匹配的 password_confirmation 字段。
Different
驗(yàn)證的字段值必須與參數(shù)字段的值不同。
public function rules() { return [ //... "password" => "bail|required|string|between:8,20|confirmed|different:old_password", "password_confirmation" => "bail|required|string|between:8,20" //... ]; }驗(yàn)證數(shù)組
通常我們的 tags 前端通常會(huì)寫成這個(gè)樣子:
然后在后端可以通過多對(duì)多的關(guān)聯(lián)來實(shí)現(xiàn)這個(gè)添加標(biāo)簽的功能,但是其實(shí)我們仔細(xì)地想:我們添加標(biāo)簽的時(shí)候希望達(dá)到什么樣的效果呢?我覺得有下面兩個(gè)最簡單的:
這個(gè)標(biāo)簽的 tags[] 是不能為空的。
一旦 tags[] 不為空,里面的每一個(gè)元素(標(biāo)簽)應(yīng)該是唯一的。
所以在驗(yàn)證的時(shí)候,我們可以這樣:
Validator::make($request->all(), [ "tags" => "required|array", "tags.*" => "required|string|distinct|min:3", ]);
這里需要解釋一下,第一條
"tags" => "required|array",
是表明這是一個(gè)不能為空的數(shù)組,然后第二條
"tags.*" => "required|string|distinct|min:3",
就是說:tags 數(shù)組里面每個(gè)元素我希望是 string ,而且是唯一的 (distinct),每個(gè)元素最小的長度為 3。
Bail第一次驗(yàn)證失敗后停止運(yùn)行驗(yàn)證規(guī)則。
只是停止這個(gè)字段的驗(yàn)證,其它字段不影響。
messages() 和 attributes() 繼承于IlluminateFoundationHttpFormRequest,可以重寫驗(yàn)證字段的含義和提示信息。
public function messages() { return [ "password.confirmed" => "兩次輸入的密碼不一致!", "password.different" => "新密碼與舊密碼不能一致!" ]; }authorize()
檢查經(jīng)過身份驗(yàn)證的用戶確定其是否具有更新給定資源的權(quán)限。
如果 authorize() 方法返回 false,則會(huì)自動(dòng)返回一個(gè)包含 403 狀態(tài)碼的 HTTP 響應(yīng),也不會(huì)運(yùn)行控制器的方法。
public function authorize() { return true; }Unique
第一種寫法:unique:(連接名)表名,表中對(duì)應(yīng)字段,忽略值,表主鍵
當(dāng)字段名和表中字段相等時(shí)可省略
忽略值一般用于修改判斷時(shí)去掉自己
表主鍵為id時(shí)可省略
public function rules() { return [ "name" => "required|string|unique:mysql.sometable,name", //... ]; }
第二種寫法:使用IlluminateValidationRule中的unique()靜態(tài)方法
public function rules() { $id = $this->get("id"); return [ "id" => "required|integer", "name" => [ "required", "string", Rule::unique("mysql.sometable")->ignore($id, "id") ], //... ]; }
還有其他查詢條件時(shí),可以鏈?zhǔn)绞褂?b>where()等方法
public function rules() { $stationId = $this->get("station_id"); return [ //... "car_number" => [ "required", "string", Rule::unique("queue")->where(function ($query) use ($stationId) { $query->where([ ["station_id", $stationId], ["cancel_state", 0]//未取消 ])->whereDate("create_time", today()->toDateString()); })//排隊(duì)中不允許重復(fù) ], //... ]; }Required
有許多規(guī)則,視實(shí)際情況使用:
required_if
required_unless
required_with
required_with_all
required_without
required_without_all
舉個(gè)例子
public function rules() { return [ "tel" => "required_without_all:mobile,email,address", "mobile" => "required_without_all:tel,email,address", "email" => "required_without_all:tel,mobile", "address" => "required_without_all:tel,mobile", ]; } public function messages() { return [ "tel.required_without_all" => "當(dāng)手機(jī)號(hào)碼、Email、地址都為空時(shí),電話號(hào)碼不能為空", "mobile.required_without_all" => "當(dāng)電話號(hào)碼、Email、地址都為空時(shí),手機(jī)號(hào)碼不能為空", "email.required_without_all" => "當(dāng)電話號(hào)碼、手機(jī)號(hào)碼都為空時(shí),Email和地址不能同時(shí)為空", "address.required_without_all" => "當(dāng)電話號(hào)碼、手機(jī)號(hào)碼都為空時(shí),Email和地址不能同時(shí)為空" ]; }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/30787.html
摘要:今天我來分享中層關(guān)于請(qǐng)求響應(yīng)與表單驗(yàn)證的知識(shí)。手動(dòng)創(chuàng)建驗(yàn)證請(qǐng)求之前的內(nèi)容是直接使用的方法來實(shí)現(xiàn)表單驗(yàn)證。下一步到這篇為止,我完成了入門指南核心概念層的路由中間件控制器請(qǐng)求響應(yīng)表單驗(yàn)證的學(xué)習(xí)和整理。 showImg(https://segmentfault.com/img/remote/1460000010882838); 今天我來分享 Laravel 中 HTTP 層關(guān)于請(qǐng)求、響應(yīng)與表...
摘要:幾乎在每一個(gè)應(yīng)用當(dāng)中都會(huì)有表單,而有表單基本就離不開表單驗(yàn)證。在中,其實(shí)可以說是有兩種方式來進(jìn)行表單驗(yàn)證使用和使用。然后,上面的驗(yàn)證規(guī)則是對(duì)于和兩個(gè)字段,我們需要用戶為其填充內(nèi)容,不能為空。 原文來自:https://laravist.com/article/15 免費(fèi)視頻教程地址 https://laravist.com/series/laravel-5-basic Laravis...
摘要:言歸正傳,之所以寫繼篇,其實(shí)是來檢討的,上一次發(fā)表了如何計(jì)算字符顯示長度后,有網(wǎng)友幾經(jīng)測試后告知有問題。簡言之單字節(jié)字符占,多字節(jié)字符占字節(jié)。 什么是ThinkSNS+ ThinkSNS(簡稱TS)始于2008年,一款全平臺(tái)綜合性社交系統(tǒng),為國內(nèi)外大中小企業(yè)和創(chuàng)業(yè)者提供社會(huì)化軟件研發(fā)及技術(shù)解決方案,目前最新版本為ThinkSNS+。 后端框架使用laravel,每周和 laravel ...
摘要:合適和夠用是最完美的追求。比如從頁面去請(qǐng)求的資源。它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了只能同源使用的限制。定義在中的路由都是無狀態(tài)的,并且會(huì)應(yīng)用中間件組。 關(guān)于作者 程序開發(fā)人員,不拘泥于語言與技術(shù),目前主要從事PHP和前端開發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開發(fā)。合適和夠用是最完美的追求。 個(gè)人網(wǎng)站:http://www.linganm...
摘要:合適和夠用是最完美的追求。比如從頁面去請(qǐng)求的資源。它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了只能同源使用的限制。定義在中的路由都是無狀態(tài)的,并且會(huì)應(yīng)用中間件組。 關(guān)于作者 程序開發(fā)人員,不拘泥于語言與技術(shù),目前主要從事PHP和前端開發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開發(fā)。合適和夠用是最完美的追求。 個(gè)人網(wǎng)站:http://www.linganm...
閱讀 2825·2023-04-25 20:06
閱讀 1446·2021-08-26 14:15
閱讀 2234·2021-08-12 13:27
閱讀 1772·2019-08-30 15:55
閱讀 3469·2019-08-30 13:20
閱讀 2826·2019-08-29 15:12
閱讀 3330·2019-08-29 15:06
閱讀 2858·2019-08-29 14:13