2016-08-08 3 views
0

Можно ли это сделать. Я использую Yii 1.1Требуется только, если другое поле имеет специальное значение?

public function rules() 
     { 
     return array(
       array('user_firstname, user_lastname, user_username, user_password,user_mobile,user_email', 'required','on'=>'createuser'), 
      if ($this->user_role > 2) 
       { 
        array('user_special_permission, 'required'),  
        } 

       array('user_email, user_username, user_password', 'length', 'max'=>255), 
       array('user_active, user_deleted', 'length', 'max'=>1),    
       // The following rule is used by search(). 
       // @todo Please remove those attributes that should not be searched. 
       array('user_id, user_firstname, user_lastname, user_mobile, user_email, user_username, user_password, user_last_login, user_num_logins, user_num_failed_logins, user_active, user_deleted', 'safe', 'on'=>'search'), 
      ); 
     } 

Я хочу user_special_permissionrequired только если user_role >2

+0

Является ли это Yii 1.1 или Yii 2? Вы можете использовать сценарии или пользовательский валидатор, как это работает, зависит от версии API. – jlapoutre

+0

Я использую Yii 1.1 – user1234

+0

. Мое решение сработало? –

ответ

1

Для Yii 1.1 вы можете реализовать пользовательские правила проверки в классе модели следующим образом:

В вашем rules массиве добавить:

array('user_special_permission, 'role_validation'), 

Затем создайте функцию role_validation :

public function role_validation($attribute, $params) 
{ 
    if ($this->user_role > 2 && empty($this->user_special_permission)) { 
      $this->addError('user_special_permission','Special Permission required.'); 
    } 
} 

Вы можете отрегулировать атрибут для w на котором отображается сообщение об ошибке, а не user_special_permission, например user_role

Для получения дополнительной документации см. Declaring Validation Rules.

0

да это возможно в Yii 1 вы можете использовать фильтры. код будет

array('user_special_permission, 'required','when'=>function($model){ 
    return $model->user_role>2; 
} 
), 
+0

Я получил ошибку CRequiredValidator, если не определен – user1234

Смежные вопросы