2017-05-30 73 views
0

我们有一个表单,其中包含“时间和日期”字段。无论是小时还是天,都必须指定,但不能同时指定。我们正在使用模式表单,Ajax和自定义验证规则,并且所有工作都正常,以确保在完成表单时指定了一个或另一个。但是,至少检查一个或多个的时间是在提交表单时。Yii2:如何在提交时检测ActiveForm验证

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

这可以在最终模型验证上进行检查,但是在这一点上它是一个标准请求,所以表单正常呈现而不是更新模态表单。

回答

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