如何在Yii2中定义场景?
发布时间:2020-12-13 16:35:26 所属栏目:PHP教程 来源:网络整理
导读:参见英文答案 Yii2 required validation on update1个 我的模型规则是这样的 public function rules() { return [ [['email','password'],'required'],[['email'],'unique'],[['status','role_id','created_by','updated_by','is_deleted'],'integer'],[['cr
参见英文答案 >
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |