我们有一个包含字段小时和天的表单。必须指定小时或天,但不能同时指定两者。我们正在使用模态表单,Ajax和自定义验证规则,所有这些都可以正常工作,以确保在完成表单时指定一个或其他一个或有效。但是,指定至少一个或另一个的时间是提交表单的时间。
问题是如何区分逐个字段执行的“正常”验证和提交时执行的验证。有没有办法检测表单何时提交(validateOnSubmit),而不是在表单数据被输入时进行验证(validateOnChange)?
这可以在最终模型验证中检查,但此时它是标准请求,因此表格正常呈现而不是更新模态表单。
答案 0 :(得分:0)
我找到了答案:有条件的规则:
[['days'], 'required', 'message' => 'Days or Hours?',
'when' => function($model) { return is_null($model->hours );},
'whenClient' => "function (attribute, value){ return $('#downtime-hours').val() == '';}",
],
[['hours'], 'required', 'message' => 'Hours or Days?',
'when' => function($model) { return is_null($model->days); },
'whenClient' => "function (attribute, value){ return $('#downtime-days').val() == '';}",
],