【发布时间】:2017-08-16 19:13:25
【问题描述】:
我有一个订阅表单的情况,它必须根据用户选择具有不同的验证规则。 我几乎完成了这个,但我被困在一个需要组合规则的地方,我认为我无法使用预定义的 laravel 规则。
如下图所示,当用户选择发票首选项时,如果用户选项是Printed,则有Digital和Printed选项strong> 我需要至少一个物理地址,所以街道地址字段组OR 地区地址字段组必须是必填项。
必填字段除非其他字段填写可以通过required_without_allrule来实现,所以我尝试了没有成功,required_if和required_without_allrules的组合,如下示例:
public function rules()
{
return [
...
'invoicing_preferences' => 'required',
'invoicing_email' => 'email|required_if:invoicing_preferences,digital',
'invoicing_street_name' => 'string|required_if:invoicing_preferences,printed|required_without_all:invoicing_district,invoicing_parcel',
'invoicing_street_number' => 'number|required_if:invoicing_preferences,printed|required_without_all:invoicing_district,invoicing_parcel',
'invoicing_street_flat' => 'number|required_if:invoicing_preferences,printed|required_without_all:invoicing_district,invoicing_parcel',
'invoicing_street_dep' => 'alpha_num|required_if:invoicing_preferences,printed|required_without_all:invoicing_district,invoicing_parcel',
'invoicing_district' => 'alpha_num|required_if:invoicing_preferences,printed|required_without_all:invoicing_street_name, invoicing_street_number; invoicing_street_flat,invoicing_street_dep',
'invoicing_parcel' => 'alpha_num|required_if:invoicing_preferences,printed|required_without_all:invoicing_street_name, invoicing_street_number; invoicing_street_flat,invoicing_street_dep',
...
];
}
这种组合不起作用,因为无论我是否在第一点检查了digital,总是会导致required_with_all规则。
【问题讨论】: