laravel一個(gè)欄位多個(gè)驗(yàn)證規(guī)則的時(shí)候通過(guò)一個(gè)規(guī)則即可通過(guò)驗(yàn)證要怎麼寫?
'alipay'=>array('sometimes','required','email','regex:/^1(3[0-9]|4[57]|5[0-35-9] |7[0135678]|8[0-9])\d{8}$/'),
例如這個(gè)驗(yàn)證規(guī)則
只要信箱帳號(hào)和手機(jī)帳號(hào)任一個(gè)只要通過(guò)了就可以驗(yàn)證通過(guò)
這個(gè)之前我也遇到過(guò)這種需求,確實(shí)沒(méi)有在文件中找到原生的支援方案,最後是這樣做的,可以參考一下
$rule = preg_match('/^\d+$/', $request->input($this->loginUsername())) ? 'tel' : 'email';
$this->validate($request, [
$this->loginUsername() => "required|{$rule}",
'password' => 'required',
]);
自訂驗(yàn)證規(guī)則
//AppServiceProvider
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Validator::extend('alipay', function($attribute, $value, $parameters, $validator) {
return preg_match('/^1(3[0-9]|4[57]|5[0-35-9]|7[0135678]|8[0-9])\d{8}$/',$value) || filter_var(FILTER_VALIDATE_EMAIL,$value);
});
}
public function register()
{
}
}
// Controller 使用
'alipay' => ['required','alipay']