问题描述
我有以下有效的验证规则,该规则检查以确保每个收件人,抄送和密件抄送电子邮件列表均包含有效的电子邮件地址:
return [
'recipients.*' => 'email','cc.*' => 'email','bcc.*' => 'email',];
我还需要能够为每个规则允许字符串###EMAIL###
以及电子邮件验证,并在Laravel 5.8中努力创建自定义验证规则(目前无法升级)
任何想法如何解决?如果它是Laravel的更高版本,我正在考虑类似(未经测试)的方法,以使您了解我正在尝试做的事情:
return [
'recipients.*' => 'exclude_if:recipients.*,###EMAIL###|email','cc.*' => 'exclude_if:recipients.*,'bcc.*' => 'exclude_if:recipients.*,];
解决方法
在5.8中,您可以创建Custom Rule Object,让我们看看如何使其真正起作用。
- 使用
names = df1.filter(like='Name').stack().to_numpy() # array(['aaa','bbb','sss','ddd','xxx','qqq','iii','ooo'],dtype=object) df2 = df2[df2.Title.str.startswith(tuple(names))] print(df2) Title Col1 Col2 0 aaaLKJ ... ... 2 dddKJH ... ... 3 ooo123 ... ... 4 aaa098 ... ...
创建规则
- 使其看起来像这样
php artisan make:rule EmailRule
- 将其包含在规则中,使其看起来像
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class EmailRule implements Rule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute,$value)
{
if ($value === '###EMAIL###' or filter_var($value,FILTER_VALIDATE_EMAIL)) {
return true;
}
return false;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The :attribute must be valid email or ###EMAIL###.';
}
}
- 编写测试(可选)