laravel 中增加 自定義 驗(yàn)證規(guī)則

本文是在request文件中進(jìn)行驗(yàn)證蒲犬,也就是把驗(yàn)證規(guī)則寫在request文件中獨(dú)立出來。

示例 request:UserRequest

1岸啡、在控制器中原叮,直接傳入U(xiǎn)serRequest參數(shù)

    public function del(UserRequest $request){}

2、在app/Providers/AppServiceProvider.php中的boot里面增加要自定義的驗(yàn)證規(guī)則
  Validator::extend('check_exists', function ($attribute, $value, 
$parameters, $validator) {
        if ($attribute == 'id'){
         return call_user_func($parameters[0].'::checkIdExist', 
$value) ? true : false;
       } else {
         return call_user_func($parameters[0].'::checkFieldExist', 
$attribute, $value) ? true : false;
       }
  });
  • check_exists為規(guī)則調(diào)用的名稱巡蘸,$attribute為要驗(yàn)證的字段奋隶,$value為該字段的值,$parameters為傳入的參數(shù)赡若。方法接受布爾返回值达布。
  • 本段代碼意思為創(chuàng)建一個(gè)名為check_exists的驗(yàn)證,當(dāng)傳入的是id字段逾冬,調(diào)用 model:: checkIdExist($value) 方法黍聂。
3、UserRequest中調(diào)用方式
正常的調(diào)用方式
    public function rules()
    {
        return 'id' => 'required|numeric|min:0|check_exists:app\Model\User';
    }

在UserRequest中的rules直接寫調(diào)用規(guī)則check_exists:app\Model\User即可身腻。

擴(kuò)展整合調(diào)用方式
    public function rules()
    {
        return $this->rules_merge( ['id' => 'required|numeric|min:0'], 
$this->rules_input_id(User::class));
    }
    public function rules_merge($origin, $addition){
        $r = collect($origin)->map(function ($value, $key) use(&$addition){
            if (array_key_exists($key, $addition)){
                array_unshift($addition[$key], $value);
                $join =  join("|", $addition[$key]);
                unset($addition[$key]);
                return $join;
            } else {
                return $value;
            }
        })->all();

        return array_merge($r, $addition);
    }

    public function rules_input_id($database){
        if (!empty($this->input('id'))){
            return ['id' => [join(":", ["check_exists", $database])]];
        }

        return [];
    }
  • 該擴(kuò)展主要是把需要的規(guī)則整合進(jìn)去原來的規(guī)則里面产还。
  • $this->rules_input_id(User::class) 是生成一個(gè)規(guī)則格式,改規(guī)則格式生成如check_exists:app\Model\User方式的格式嘀趟。
  • rules_merge是把原來的規(guī)則required|numeric|min:0跟check_exists:app\Model\User規(guī)則整合在一起生效脐区。最終得到的是required|numeric|min:0|check_exists:app\Model\User規(guī)則。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末她按,一起剝皮案震驚了整個(gè)濱河市牛隅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌酌泰,老刑警劉巖媒佣,帶你破解...
    沈念sama閱讀 221,331評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異陵刹,居然都是意外死亡默伍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門衰琐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來也糊,“玉大人,你說我怎么就攤上這事羡宙±晏辏” “怎么了?”我有些...
    開封第一講書人閱讀 167,755評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵狗热,是天一觀的道長捕捂。 經(jīng)常有香客問我瑟枫,道長,這世上最難降的妖魔是什么指攒? 我笑而不...
    開封第一講書人閱讀 59,528評(píng)論 1 296
  • 正文 為了忘掉前任慷妙,我火速辦了婚禮,結(jié)果婚禮上允悦,老公的妹妹穿的比我還像新娘膝擂。我一直安慰自己,他們只是感情好隙弛,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,526評(píng)論 6 397
  • 文/花漫 我一把揭開白布架馋。 她就那樣靜靜地躺著,像睡著了一般全闷。 火紅的嫁衣襯著肌膚如雪叉寂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,166評(píng)論 1 308
  • 那天总珠,我揣著相機(jī)與錄音屏鳍,去河邊找鬼。 笑死局服,一個(gè)胖子當(dāng)著我的面吹牛钓瞭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播淫奔,決...
    沈念sama閱讀 40,768評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼山涡,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了唆迁?” 一聲冷哼從身側(cè)響起鸭丛,我...
    開封第一講書人閱讀 39,664評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎唐责,沒想到半個(gè)月后系吩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,205評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡妒蔚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,290評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了月弛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肴盏。...
    茶點(diǎn)故事閱讀 40,435評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡旗闽,死狀恐怖婿滓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情镇草,我是刑警寧澤厉萝,帶...
    沈念sama閱讀 36,126評(píng)論 5 349
  • 正文 年R本政府宣布恍飘,位于F島的核電站榨崩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏章母。R本人自食惡果不足惜母蛛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,804評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乳怎。 院中可真熱鬧彩郊,春花似錦、人聲如沸蚪缀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽询枚。三九已至违帆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間金蜀,已是汗流浹背刷后。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留廉油,地道東北人惠险。 一個(gè)月前我還...
    沈念sama閱讀 48,818評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像抒线,于是被迫代替她去往敵國和親班巩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,442評(píng)論 2 359

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

  • 1嘶炭、簡介 Laravel 提供了多種方法來驗(yàn)證應(yīng)用輸入數(shù)據(jù)抱慌。默認(rèn)情況下,Laravel 的控制器基類使用Valid...
    伊Summer閱讀 1,528評(píng)論 0 3
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理眨猎,服務(wù)發(fā)現(xiàn)抑进,斷路器,智...
    卡卡羅2017閱讀 134,695評(píng)論 18 139
  • 經(jīng)過對(duì)django的初步學(xué)習(xí)睡陪,我們已經(jīng)對(duì)后臺(tái)的基本流程以及django的運(yùn)作有了一定的了解寺渗,但是這還不足夠,dja...
    coder_ben閱讀 3,834評(píng)論 8 34
  • 為什么進(jìn)行單元測(cè)試 在我們開發(fā)的app的時(shí)候兰迫,可能會(huì)出現(xiàn)一些邏輯問題是測(cè)試人員測(cè)試不到的信殊,或者在測(cè)試前需要自測(cè)的時(shí)...
    mymdeep閱讀 4,187評(píng)論 2 4
  • 一 我在夢(mèng)里出走,一往無前汁果,一無所有涡拘。 一人,一包据德,一顆流浪遠(yuǎn)方的破碎的心鳄乏。 只因?yàn)轷纬担犝f你愛我。 二 我已經(jīng)習(xí)慣...
    夜微語z閱讀 292評(píng)論 8 1