2015-06-29 2 views
3

моих правил модели подобно этомуКак определить сценарий в Yii2?

public function rules() 
     { 
      return [ 
       [['email','password'], 'required'], 
       [['email'],'unique'], 
       [['status','role_id','created_by', 'updated_by', 'is_deleted'], 'integer'], 
       [['created_at', 'updated_at'], 'safe'], 
       [['first_name', 'last_name', 'email', 'username','location','address','about_me'], 'string', 'max' => 200], 
       [['phone'], 'string', 'max' => 100] 
      ]; 
     } 

при создании нового пользователя, мне нужен адрес электронной почты и пароль, необходимом, но при обновлении мне нужно требуется только имя пользователя. Как я могу это сделать?

ответ

9

Прежде всего, это лучше добавлять сценарии, как константы модели вместо закодированных строк, например:

const SCENARIO_CREATE = 'create'; 

Затем вы можете использовать его как это:

[['email','password'], 'required', 'on' => self::SCENARIO_CREATE], 

Другой способ описать его scenarios() метод:

public function scenarios() 
{ 
    $scenarios = parent::scenarios(); 
    $scenarios[self::SCENARIO_CREATE] = ['email', 'password']; 

    return $scenarios; 
} 

Таким образом, вам нужно к конкретным fy все безопасные атрибуты для каждого сценария.

Наконец, не забудьте установить необходимый сценарий после создания нового экземпляра модели.

$model = new User; 
$model->scenario = User::SCENARIO_CREATE; 
... 

Официальные документы:

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