W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
注冊(cè)自定義驗(yàn)證規(guī)則
Laravel 提供了各種有用的驗(yàn)證規(guī)則,但是,您可能希望可以設(shè)定自定義驗(yàn)證規(guī)則。注冊(cè)生成自定義的驗(yàn)證規(guī)則的方法之一就是使用 Validator::extend
方法:
Validator::extend('foo', function($attribute, $value, $parameters)
{
return $value == 'foo';
});
自定義驗(yàn)證器閉包接收三個(gè)參數(shù):要被驗(yàn)證的 $attribute(屬性) 的名稱,屬性的值 $value,傳遞至驗(yàn)證規(guī)則的 $parameters 數(shù)組。
您同樣可以傳遞一個(gè)類和方法到 extend 方法中,取代原本的閉包:
Validator::extend('foo', 'FooValidator@validate');
注意,您同時(shí)需要為您的自定義規(guī)則制訂一個(gè)錯(cuò)誤信息。您可以使用行內(nèi)自定義信息數(shù)組或是在認(rèn)證語(yǔ)言文件里新增。
擴(kuò)展 Validator 類
除了使用閉包回調(diào)來(lái)擴(kuò)展 Validator 外,您一樣可以直接擴(kuò)展 Validator 類。您可以寫(xiě)一個(gè)擴(kuò)展自 Illuminate\Validation\Validator
的驗(yàn)證器類。您也可以增加驗(yàn)證方法到以 validate
為開(kāi)頭的類中:
<?php
class CustomValidator extends Illuminate\Validation\Validator {
public function validateFoo($attribute, $value, $parameters)
{
return $value == 'foo';
}
}
拓展自定義驗(yàn)證器解析器
接下來(lái),您需要注冊(cè)您自定義驗(yàn)證器擴(kuò)展:
Validator::resolver(function($translator, $data, $rules, $messages)
{
return new CustomValidator($translator, $data, $rules, $messages);
});
當(dāng)創(chuàng)建自定義驗(yàn)證規(guī)則時(shí),您可能有時(shí)需要為錯(cuò)誤信息定義自定義的占位符。您可以如上所述創(chuàng)建一個(gè)自定義的驗(yàn)證器,然后增加 replaceXXX 函數(shù)進(jìn)驗(yàn)證器中。
protected function replaceFoo($message, $attribute, $rule, $parameters)
{
return str_replace(':foo', $parameters[0], $message);
}
如果您想要增加一個(gè)自定義信息 "replacer" 但不擴(kuò)展 Validator
類,您可以使用 Validator::replacer
方法:
Validator::replacer('rule', function($message, $attribute, $rule, $parameters)
{
//
});
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: