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