【问题标题】:Yii2: How to detect ActiveForm validation on submitYii2:如何在提交时检测 ActiveForm 验证
【发布时间】:2017-05-30 10:17:12
【问题描述】:
我们有一个包含“小时”和“天”字段的表单。必须指定小时或天,但不能同时指定。我们正在使用模式表单、Ajax 和自定义验证规则,并且一切正常,以确保在完成表单时指定一个或另一个有效。但是,检查至少一个或另一个的时间是在提交表单时指定的。
问题是如何区分逐个字段执行的“正常”验证和提交时执行的验证。有没有办法检测何时提交表单 (validateOnSubmit),而不是在输入表单数据时何时发布表单数据以进行验证 (validateOnChange)?
这可以在最终模型验证时进行检查,但此时它是一个标准请求,因此表单会正常呈现,而不是更新模态表单。
【问题讨论】:
标签:
ajax
validation
yii2
active-form
【解决方案1】:
我找到了答案:有条件的要求规则:
[['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() == '';}",
],