2016-06-27 2 views
0

Comment ajouter une validation personnalisée pour un champ dans yii2.? La valeur de zone de texte ne doit pas dépasser les valeurs de champ de table du modèle actuel. Est-il possible d'ajouter une nouvelle règle à partir du contrôleur?Yii2: règles de validation de valeur maximale dynamique

Ex: $model->f1 doit être inférieur ou égal à $model->f2.

J'ai quelques points avec dynamicmodel. Mais je n'ai qu'un seul champ à vérifier.

il devrait également fonctionner côté client.

est là de toute façon pour ajouter une règle personnalisée du contrôleur ou dans activeform?

Merci.

Répondre

1

Ajouter à votre règles de validation dans le modèle pour assurer La valeur f1 est < = f2.

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

Vous pouvez utiliser CompareValidator compareValue propriété comme: -

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

Modèle valeur f1 qui est enregistrée dans la base de données doit être supérieure à f2 remplis par l'utilisateur