我们有一个包含字段、小时和天的表单。必须指定小时或天,但不能同时指定。我们使用了一个模式表单,Ajax和自定义验证规则,所有这些都工作得很好,以确保一个或另一个在完成表单时是指定和有效的。
问题是如何区分在逐个字段上执行的“普通”验证和在提交时执行的验证。有没有一种方法可以检测表单何时提交(validateOnSubmit),而不是表单数据在输入时发布验证(validateOnChange)?
这可以在最终模型验证时进行检查,但在这一点上,它是一个标准请求,因此表单将正常呈现,而不是更新模态表单。
发布于 2017-05-30 18:57:50
我找到了答案:有条件的必需规则:
[['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() == '';}",
],https://stackoverflow.com/questions/44259486
复制相似问题