gpt4 book ai didi

yii2 - 如何在 Yii2 中定义场景?

转载 作者:行者123 更新时间:2023-12-04 13:11:05 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Yii2 required validation on update

(1 个回答)


6年前关闭。




我的模型规则是这样的

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

创建新用户时,我需要电子邮件和密码,但在更新期间,我只需要用户名。我怎样才能做到这一点?

最佳答案

首先,最好将场景作为常量添加到模型而不是硬编码字符串,例如:

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

官方文档:
  • Scenarios
  • 关于yii2 - 如何在 Yii2 中定义场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31112079/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com