如何在 Yii2 中定义场景? [复制]

2024-02-09

我的模型规则是这样的

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() method:

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

    return $scenarios;
}

这样您就需要为每个场景指定所有安全属性。

最后,不要忘记在创建新模型实例后设置所需的场景。

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

官方文档:

  • 应用场景 http://www.yiiframework.com/doc-2.0/guide-structure-models.html#scenarios
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Yii2 中定义场景? [复制] 的相关文章

随机推荐