protected function prepareForValidation()
{
//Here email we are reciving as comma seperated so we make it array
$this->merge(['email' => explode(',', rtrim($this->email, ','))]);
}
然后自动调用上述函数,并将电子邮件ID转换为数组,之后使用数组验证规则
public function rules()
{
return [
'email.*' => 'required|email'
];
}
6条答案
按热度按时间suzh9iv81#
你需要编写自定义的Validator,它将接受数组并手动验证数组中的每一封邮件。
v440hwme2#
我们可以在没有自定义验证的情况下实现这一点,我们可以覆盖一个方法
prepareForValidation
然后自动调用上述函数,并将电子邮件ID转换为数组,之后使用数组验证规则
nfzehxib3#
在5.6或更高版本中,您可以按如下方式定义验证器规则:
'email.*' => 'required|email'
这将要求
email
键是有效电子邮件地址的数组。okxuctiv4#
Laravel 5.2引入了阵列验证,您可以轻松地验证电子邮件阵列:)
您所需要的只是将字符串分解为数组。
https://laravel.com/docs/5.2/validation#validating-arrays
ee7vknir5#
我是这样做的。对我来说很好。如果一封或多封电子邮件(email1@gmail.com,email2@yahoo.com,email3@gmail.com)来自这样的表单,下面的自定义验证器就可以工作。这需要添加到- AppServiceProvider.php -文件中。新规则是- 'emails'。
而在你的控制器中,它可以这样使用:
ngynwnxp6#
如果你不想仅仅因为一个规则就覆盖
prepareForValidation
,这里有另一种使用闭包的方法:使用Laravel 9.x进行测试