學習筆記《Laravel Validation》

讓我驚異的一段代碼:

$this->validate(request(), [
    'user.name' => 'sometimes|required|exists:users,name',
]);

上面的代碼表示需要 users 表中的 name 字段存在用戶提交的值,這個 Validation 機制在使用的時候感覺耳目一新,所以這里系統(tǒng)的學習一下 Laravel Validation

文檔地址:
https://laravel.com/docs/5.5/validation

規(guī)則

和數(shù)據(jù)庫相關:
exists unique 'groups' => 'required|exists:groups,jid,parent,!0' // 表示 not exists

特殊使用:
after before // 日期相關
dimensions // 圖片相關 'avatar' => 'dimensions:min_width=100,min_height=200'
image // 表示這個文件必須是一個圖片
json // 必須是一個 JSON 字符串
accepted // true false 0 1 專門用在是否接受條款的按鈕上
active_url // 必須是一個有效的符合 checkdnsrr() 的地址
alpha // 必須是字母
alpha_dash // 必須是字母 數(shù)字 破折號 下劃線
alpha_num // 必須是字母 數(shù)字
digits // 一個指定長度的數(shù)字
digits_between // 某個長度之間的數(shù)字
integer // 必須是數(shù)字
numeric // 必須是數(shù)字或者數(shù)字字符串
boolean // ture false 1 0 '1' '0'
string // 必須是字符串
array // 必須是數(shù)組
distinct // 必須是不含有重復值的數(shù)組
between // 必須是區(qū)間之內(nèi)的數(shù)字
confirmed // 必須有一個 ***_confirmation 這樣的 field 存在
date // 必須是某個日期
date_format // 必須符合某種日期的格式
different // 必須不同于某個值
email // 必須是 email 格式的
file // 必須是一個上傳的文件
filled // 不能為空
in // 必須是一個 lists 中的一個
not_in // 必須不是一個 lists 中的一個
in_array // 必須是另一個字段中的一個值
ip // 必須是 IP 地址
max // 必須小于這個值
min // 必須大于某個值
mimetypes // 必須是某個文件類型
mimes // 必須帶有某個擴展名
nullable // 可以是 null
present // 必須在 input 中出現(xiàn)良风,但是可以為空
regex // 必須符合某個正則表達式
required // 必須要填寫
required_if // 如果某個別的字段有值,則不能為空
required_unless // 如果別的某個字段的值為某個值,則不能為空
required_with // 在某些別的字段有值的時候,不能為空
required_with_all // 在某些別的字段都有值的時候粟关,不能為空
required_without // 某些別的字段沒有值的時候,不能為空
required_without_all // 某些別的字段都沒有值的時候环戈,不能為空
same // 必須與某個別的字段的值一樣
size // 數(shù)字 字符串 文件 必須在某個區(qū)間內(nèi)
timezone // 必須是某個時區(qū)
url // 必須是 Url 地址

自定義 validation

Validator::extend() // 新創(chuàng)建
Validator::replacer() // 替換原有
Validator::extendImplicit() // 在值為null的情況下依然進行規(guī)則驗證

這塊等真正的運用場景出現(xiàn)的時候闷板,再補充

錯誤信息的封裝

將 Controller.php 文件修改為:

<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;

class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    protected function formatValidationErrors(Validator $validator)
    {
        if ($validator->fails()) {
            // 假設所有 postman 的請求都是 AJAX 請求
            if (request()->headers->get('postman-token'))
            {
                request()->headers->set('X-Requested-With', 'XMLHttpRequest');
            }

            return ['status'=>'fail', 'data' => $validator->errors()->all()];
        }
    }
}

sometimes 方法

這個方法可以對某些符合條件的表單進行判斷,非常的方便:

$validator->sometimes(['reason', 'cost'], 'required', function ($input) {
    return $input->games >= 100;
});

多個數(shù)據(jù)同時驗證

$this->validate($request, [
    'courseId' => "unique:teacher_student,course_id,NULL,id,teacher_id,{$teacherId},student_id,{$studentId}",
]);
// modify from - https://brianretterer.com/quick-tip-laravel-unique-validation/

驗證后返回使用

這是一個 5.5 版本的功能院塞,非常有用:

$validatedValue = $request->validate([
    'continue' => 'sometimes|required|url',
]);

return view('auth.login', ['validatedValue'=>$validatedValue]);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末遮晚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拦止,更是在濱河造成了極大的恐慌县遣,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異艺玲,居然都是意外死亡括蝠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門饭聚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搁拙,你說我怎么就攤上這事秒梳。” “怎么了箕速?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵酪碘,是天一觀的道長。 經(jīng)常有香客問我盐茎,道長兴垦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任字柠,我火速辦了婚禮探越,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘窑业。我一直安慰自己钦幔,他們只是感情好,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布常柄。 她就那樣靜靜地躺著鲤氢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪西潘。 梳的紋絲不亂的頭發(fā)上卷玉,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機與錄音喷市,去河邊找鬼相种。 笑死,一個胖子當著我的面吹牛东抹,可吹牛的內(nèi)容都是我干的蚂子。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼缭黔,長吁一口氣:“原來是場噩夢啊……” “哼食茎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起馏谨,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤别渔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哎媚,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡喇伯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拨与。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稻据。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖买喧,靈堂內(nèi)的尸體忽然破棺而出捻悯,到底是詐尸還是另有隱情,我是刑警寧澤淤毛,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布今缚,位于F島的核電站,受9級特大地震影響低淡,放射性物質(zhì)發(fā)生泄漏姓言。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一蔗蹋、第九天 我趴在偏房一處隱蔽的房頂上張望何荚。 院中可真熱鬧,春花似錦纸颜、人聲如沸兽泣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唠倦。三九已至,卻和暖如春涮较,著一層夾襖步出監(jiān)牢的瞬間稠鼻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工狂票, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留候齿,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓闺属,卻偏偏與公主長得像慌盯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子掂器,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1亚皂、簡介 Laravel 提供了多種方法來驗證應用輸入數(shù)據(jù)。默認情況下国瓮,Laravel 的控制器基類使用Valid...
    伊Summer閱讀 1,528評論 0 3
  • 驗證 簡介 Laravel 對驗證應用的輸入數(shù)據(jù)提供了多中途徑的實現(xiàn)灭必。默認的狞谱,Laravel 的基礎控制器類使用了...
    Dearmadman閱讀 10,212評論 5 8
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)禁漓,斷路器跟衅,智...
    卡卡羅2017閱讀 134,701評論 18 139
  • 20171028親愛的兒子,昨晚上我們聊天播歼,我說我要做你十五分鐘的“情感垃圾桶”(哈哈)伶跷,你可以把這周在學校的開心...
    簡單的幸福_ceb3閱讀 257評論 0 1
  • 現(xiàn)在是2014年7月14日下午三點鐘,廣州天河區(qū)秘狞,世界杯剛結(jié)束撩穿。 我現(xiàn)在正在上班,坐在公司里已經(jīng)快一年的位置上谒撼。 ...
    也么哥閱讀 677評論 2 2