2017-01-10 4 views
2

Ich muss die Validierung wie im Titel erwähnt implementieren, dass eines der beiden Felder (E-Mail, Telefon) erforderlich ist. Ich tue dies in meiner model:Yii2: Entweder ein Feld ist erforderlich Validierung

[['email'],'either', ['other' => ['phone']]], 

Und das ist die Methode:

public function either($attribute_name, $params) { 
     $field1 = $this->getAttributeLabel($attribute_name); 
     $field2 = $this->getAttributeLabel($params['other']); 
     if (empty($this->$attribute_name) && empty($this->$params['other'])) { 
      $this->addError($attribute_name, Yii::t('user', "either {$field1} or {$field2} is required.")); 
      return false; 
     } 
     return true; 
    } 

Wenn ich meine Index-Seite zugreifen, es gibt mir diese Fehlermeldung:

Exception (Unknown Property) 'yii\base\UnknownPropertyException' with message 'Setting unknown property: yii\validators\InlineValidator::0'

Jede Hilfe ?

+0

Parameter sollten nicht in Array sein. – Bizley

+0

Die Parameter wurden geändert, um nicht in Array zu sein, immer noch der gleiche Fehler! – Saani

+0

Versuchen Sie, geschweifte Klammern in 'empty ($ this -> {$ params ['andere']}}' – Bizley

Antwort

1

sollte die Regel sein:

['email', 'either', 'params' => ['other' => 'phone']], 

Und Methode:

public function either($attribute_name, $params) 
{ 
    $field1 = $this->getAttributeLabel($attribute_name); 
    $field2 = $this->getAttributeLabel($params['other']); 
    if (empty($this->$attribute_name) || empty($this->{$params['other']})) { 
     $this->addError($attribute_name, Yii::t('user', "either {$field1} or {$field2} is required.")); 
    } 
} 
+0

Vielen Dank! Es funktionierte! – Saani

Verwandte Themen