2016-06-27 10 views
0

Wie fügt man benutzerdefinierte Validierung für ein Feld in yii2 hinzu? Der Textfeldwert sollte die Werte eines Tabellenfeldes des aktuellen Modells nicht überschreiten. Gibt es eine Möglichkeit, eine neue Regel vom Controller hinzuzufügen?Yii2: Dynamische Max-Wert-Validierungsregeln

Beispiel: $model->f1 sollte kleiner oder gleich $model->f2 sein.

Ich habe ein paar Punkte mit dynamicmodel. Aber ich habe nur ein Feld zu überprüfen.

sollte es auch auf der Client-Seite funktionieren.

Gibt es sowieso eine benutzerdefinierte Regel vom Controller oder in Activeform hinzufügen?

Danke.

Antwort

1

diese in Ihre Validierungsregeln in Modell, um sicherzustellen, f1 Wert ist < = f2.

[ 
    // other validation rules 
    ['f1', 'compare', 'compareAttribute' => 'f2', 'operator' => '<='], 
] 
1

Sie können CompareValidator compareValue Eigenschaft als: -

public function rules() 
{ 
    return [ 
     // Your Validation rules as 
     [ 
      'f2' , 
      'compare' , 
      'compareValue' => ArrayHelper::getValue($this , ['oldAttributes' ,'f1']), 
      'operator' => '<=', 
     ] 
    ]; 
} 

Modell f1 Wert, der in der Datenbank gespeichert wird, größer ist als f2 durch den Benutzer gefüllt sein muss