国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Laravel的表單驗證

wapeyang / 2870人閱讀

摘要:驗證的字段值必須與參數字段的值不同。第一次驗證失敗后停止運行驗證規則。只是停止這個字段的驗證,其它字段不影響。兩次輸入的密碼不一致新密碼與舊密碼不能一致檢查經過身份驗證的用戶確定其是否具有更新給定資源的權限。

修改密碼

Confirmed

如果要驗證的字段是 password,輸入中必須存在匹配的 password_confirmation 字段。

Different

驗證的字段值必須與參數字段的值不同。

public function rules() {

    return [
        //...
        "password" => "bail|required|string|between:8,20|confirmed|different:old_password",
        "password_confirmation" => "bail|required|string|between:8,20"
        //...
    ];

}
驗證數組

通常我們的 tags 前端通常會寫成這個樣子:

然后在后端可以通過多對多的關聯來實現這個添加標簽的功能,但是其實我們仔細地想:我們添加標簽的時候希望達到什么樣的效果呢?我覺得有下面兩個最簡單的:

這個標簽的 tags[] 是不能為空的。

一旦 tags[] 不為空,里面的每一個元素(標簽)應該是唯一的。

所以在驗證的時候,我們可以這樣:

Validator::make($request->all(), [    
  "tags" => "required|array",    
  "tags.*" => "required|string|distinct|min:3",
]);

這里需要解釋一下,第一條

"tags" => "required|array", 

是表明這是一個不能為空的數組,然后第二條

"tags.*" => "required|string|distinct|min:3", 

就是說:tags 數組里面每個元素我希望是 string ,而且是唯一的 (distinct),每個元素最小的長度為 3。

Bail

第一次驗證失敗后停止運行驗證規則。
只是停止這個字段的驗證,其它字段不影響。

messages()和attributes()

messages()attributes() 繼承于IlluminateFoundationHttpFormRequest,可以重寫驗證字段的含義和提示信息。

public function messages() {
    return [
        "password.confirmed" => "兩次輸入的密碼不一致!",
        "password.different" => "新密碼與舊密碼不能一致!"
    ];
}
authorize()

檢查經過身份驗證的用戶確定其是否具有更新給定資源的權限。
如果 authorize() 方法返回 false,則會自動返回一個包含 403 狀態碼的 HTTP 響應,也不會運行控制器的方法。

public function authorize() {
    return true;
}
Unique

第一種寫法:unique:(連接名)表名,表中對應字段,忽略值,表主鍵

當字段名和表中字段相等時可省略

忽略值一般用于修改判斷時去掉自己

表主鍵為id時可省略

public function rules() {
    return [
        "name" => "required|string|unique:mysql.sometable,name",
        //...
    ];
}

第二種寫法:使用IlluminateValidationRule中的unique()靜態方法

public function rules() {
    $id = $this->get("id");

    return [
        "id" => "required|integer",
        "name" => [
            "required",
            "string",
            Rule::unique("mysql.sometable")->ignore($id, "id")
        ],
        //...
    ];
}

還有其他查詢條件時,可以鏈式使用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());
            })//排隊中不允許重復
        ],
        //...
    ];
}
Required

有許多規則,視實際情況使用:

required_if

required_unless

required_with

required_with_all

required_without

required_without_all

舉個例子

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" => "當手機號碼、Email、地址都為空時,電話號碼不能為空",
        "mobile.required_without_all" => "當電話號碼、Email、地址都為空時,手機號碼不能為空",
        "email.required_without_all" => "當電話號碼、手機號碼都為空時,Email和地址不能同時為空",
        "address.required_without_all" => "當電話號碼、手機號碼都為空時,Email和地址不能同時為空"
    ];
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/30787.html

相關文章

  • Laravel思維導圖之HTTP請求、響應、表單驗證

    摘要:今天我來分享中層關于請求響應與表單驗證的知識。手動創建驗證請求之前的內容是直接使用的方法來實現表單驗證。下一步到這篇為止,我完成了入門指南核心概念層的路由中間件控制器請求響應表單驗證的學習和整理。 showImg(https://segmentfault.com/img/remote/1460000010882838); 今天我來分享 Laravel 中 HTTP 層關于請求、響應與表...

    lewif 評論0 收藏0
  • Laravel 5系列教程七:表單驗證 Validation

    摘要:幾乎在每一個應用當中都會有表單,而有表單基本就離不開表單驗證。在中,其實可以說是有兩種方式來進行表單驗證使用和使用。然后,上面的驗證規則是對于和兩個字段,我們需要用戶為其填充內容,不能為空。 原文來自:https://laravist.com/article/15 免費視頻教程地址 https://laravist.com/series/laravel-5-basic Laravis...

    jindong 評論0 收藏0
  • 社交系統ThinkSNS+ 如何利用 Laravel 表單驗證驗證用戶名(我朝獨有需求,兩個字母

    摘要:言歸正傳,之所以寫繼篇,其實是來檢討的,上一次發表了如何計算字符顯示長度后,有網友幾經測試后告知有問題。簡言之單字節字符占,多字節字符占字節。 什么是ThinkSNS+ ThinkSNS(簡稱TS)始于2008年,一款全平臺綜合性社交系統,為國內外大中小企業和創業者提供社會化軟件研發及技術解決方案,目前最新版本為ThinkSNS+。 后端框架使用laravel,每周和 laravel ...

    xiaodao 評論0 收藏0
  • 【日常填坑】之ajax請求laravelapi接口

    摘要:合適和夠用是最完美的追求。比如從頁面去請求的資源。它允許瀏覽器向跨源服務器,發出請求,從而克服了只能同源使用的限制。定義在中的路由都是無狀態的,并且會應用中間件組。 關于作者 程序開發人員,不拘泥于語言與技術,目前主要從事PHP和前端開發,使用Laravel和VueJs,App端使用Apicloud混合式開發。合適和夠用是最完美的追求。 個人網站:http://www.linganm...

    Arno 評論0 收藏0
  • 【日常填坑】之ajax請求laravelapi接口

    摘要:合適和夠用是最完美的追求。比如從頁面去請求的資源。它允許瀏覽器向跨源服務器,發出請求,從而克服了只能同源使用的限制。定義在中的路由都是無狀態的,并且會應用中間件組。 關于作者 程序開發人員,不拘泥于語言與技術,目前主要從事PHP和前端開發,使用Laravel和VueJs,App端使用Apicloud混合式開發。合適和夠用是最完美的追求。 個人網站:http://www.linganm...

    neu 評論0 收藏0

發表評論

0條評論

wapeyang

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<