php – 仅当另一个字段具有值时必填字段,否则必须为空
发布时间:2020-12-13 16:10:15 所属栏目:PHP教程 来源:网络整理
导读:我的问题是关于Laravel validation rules. 我有两个输入a和b. a是具有三个可能值的选择输入:x,y和z.我想写这条规则: b must have a value only if a values is x . And b must be empty otherwise. 有没有办法写这样的规则?我试过required_with,required_
我的问题是关于Laravel
validation rules.
我有两个输入a和b. a是具有三个可能值的选择输入:x,y和z.我想写这条规则:
有没有办法写这样的规则?我试过required_with,required_without,但它似乎无法涵盖我的情况. 换句话说,如果前面的解释不够清楚: >如果a == x,b必须有一个值. 解决方法
您必须创建自己的验证规则.
编辑app / Providers / AppServiceProvider.php并将此验证规则添加到引导方法: // Extends the validator Validator::extendImplicit( 'empty_if',function ($attribute,$value,$parameters,$validator) { $data = request()->input($parameters[0]); $parameters_values = array_slice($parameters,1); foreach ($parameters_values as $parameter_value) { if ($data == $parameter_value && !empty($value)) { return false; } } return true; }); // (optional) Display error replacement Validator::replacer( 'empty_if',function ($message,$attribute,$rule,$parameters) { return str_replace( [':other',':value'],[$parameters[0],request()->input($parameters[0])],$message ); }); (可选)在resources / lang / en / validation.php中创建错误消息: 'empty_if' => 'The :attribute field must be empty when :other is :value.', 然后在控制器中使用此规则(使用require_if来遵守原始帖子的两个规则): $attributes = request()->validate([ 'a' => 'required','b' => 'required_if:a,x|empty_if:a,y,z' ]); 有用! 旁注:我可能会使用empty_if和empty_unless为此需求创建一个包,并在此处发布链接 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |