Yii2:如何在提交时检测ActiveForm验证

时间:2017-05-30 10:17:12

标签: ajax validation yii2 active-form

我们有一个包含字段小时和天的表单。必须指定小时或天,但不能同时指定两者。我们正在使用模态表单,Ajax和自定义验证规则,所有这些都可以正常工作,以确保在完成表单时指定一个或其他一个或有效。但是,指定至少一个或另一个的时间是提交表单的时间。

问题是如何区分逐个字段执行的“正常”验证和提交时执行的验证。有没有办法检测表单何时提交(validateOnSubmit),而不是在表单数据被输入时进行验证(validateOnChange)?

这可以在最终模型验证中检查,但此时它是标准请求,因此表格正常呈现而不是更新模态表单。

1 个答案:

答案 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() == '';}",
        ],