2017-05-30 6 views
0

時間と日のフィールドを含むフォームがあります。時間または日のいずれかを指定する必要がありますが、両方を指定することはできません。私たちはモーダルフォーム、Ajax、およびカスタム検証ルールを使用しています。フォームを完成させるときに、1つまたは他のものが指定され、有効であることを確認するためにすべてがうまく機能しています。ただし、少なくとも1つまたは他のものをチェックする時間は、フォームが提出されるときです。Yii2:送信時にActiveFormの検証を検出する方法

問題は、フィールド単位で実行される「通常の」検証と送信時に実行される検証を区別する方法です。フォームデータが入力されている間(validateOnChange)にフォームデータが投稿されたときとは対照的に、フォームが送信されたとき(validateOnSubmit)を検出する方法はありますか?

これは最終的なモデル検証で確認できますが、この時点では標準要求であるため、モーダルフォームを更新する代わりにフォームが正常に表示されます。

答えて

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() == '';}", 
     ], 
関連する問題