как определить сценарий в 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;
...

официальный docs: