Как определить сценарий в 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]
];
}
при создании нового пользователя мне нужны адрес электронной почты и пароль, но при обновлении мне нужно только имя пользователя. Как я могу это сделать?
1 ответ
Решение
Прежде всего, лучше добавить сценарии в качестве констант в модель вместо жестко закодированных строк, например:
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;
}
Таким образом, вам нужно указать все безопасные атрибуты для каждого сценария.
Наконец, не забудьте установить необходимый сценарий после создания нового экземпляра модели.
$model = new User;
$model->scenario = User::SCENARIO_CREATE;
...
Официальные документы: