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