微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Yii2中定义场景?

参见英文答案 > Yii2 required validation on update1个
我的模型规则是这样的
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'],'max' => 100]
            ];
        }

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

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

然后你可以像这样使用它:

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

另一种方法是在scenario()方法中描述它:

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

    return $scenarios;
}

这样,您需要为每个方案指定所有安全属性.

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

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

官方文档:

> Scenarios

原文地址:https://www.jb51.cc/php/132469.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐