2017-01-10 2 views
2

두 필드 (전자 메일, 전화) 중 하나가 필요하다는 제목의 유효성 검사를 구현해야합니다.Yii2 : 하나의 필드가 필요합니다. 유효성 검사

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

을 그리고 이것은 방법이다 : 나는 나의 model에서이 일을하고

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

어떤 도움 : 내 인덱스 페이지에 액세스 할 때

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; 
    } 

, 그것은 나에게 오류를 제공합니다 ?

+0

매개 변수 배열에 있으면 안됩니다. – Bizley

+0

배열에없는 매개 변수가 변경되었습니다. 여전히 같은 오류입니다! – Saani

+0

'empty ($ this -> {$ params [ 'other']})' – Bizley

답변

1

규칙은 다음과 같아야합니다

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

및 방법 :

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

고마워요! 그것은 효과가있다! – Saani