2017-05-30 2 views
0

Wir haben ein Formular mit den Feldern Stunden und Tage. Es müssen entweder Stunden oder Tage angegeben werden, aber nicht beide. Wir verwenden ein modales Formular, Ajax und benutzerdefinierte Validierungsregeln und alles funktioniert einwandfrei, um sicherzustellen, dass das eine oder andere beim Ausfüllen des Formulars angegeben und gültig ist. Es wird jedoch festgelegt, wann mindestens das eine oder das andere überprüft wird, wenn das Formular gesendet wird.Yii2: So erkennen Sie die ActiveForm-Validierung beim Senden

Das Problem besteht darin, wie man zwischen der "normalen" Validierung, die Feld für Feld durchgeführt wird, und der Validierung, die beim Senden durchgeführt wird, unterscheidet. Gibt es eine Möglichkeit zu erkennen, wann das Formular gesendet wird (validateOnSubmit), im Gegensatz dazu, wenn die Formulardaten während der Eingabe zur Validierung gepostet werden (validateOnChange)?

Dies kann bei der endgültigen Modellüberprüfung überprüft werden, aber zu diesem Zeitpunkt ist es eine Standardanforderung, sodass das Formular normal gerendert wird, anstatt das modale Formular zu aktualisieren.

Antwort

0

ich die Antwort gefunden: bedingte Regeln erforderlich:

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