Yii2规则仅适用于场景
发布时间:2020-12-13 21:33:20 所属栏目:PHP教程 来源:网络整理
导读:我在Yii2评论模型中写了两个场景,当用户登录或是访客时. 我的规则是: public function rules() { return [ [['user_id'],'required','on' = self::SCENARIO_USER],[['name','email'],'on' = self::SCENARIO_GUEST],[['post_id','body','date'],'required'],
我在Yii2评论模型中写了两个场景,当用户登录或是访客时.
我的规则是: public function rules() { return [ [['user_id'],'required','on' => self::SCENARIO_USER],[['name','email'],'on' => self::SCENARIO_GUEST],[['post_id','body','date'],'required'],[['user_id','parent_id','post_id','status'],'integer'],[['body'],'string'],[['date'],'safe'],'email','site'],'string','max' => 256],]; } 和senarios功能: public function scenarios() { $scenarios = parent::scenarios(); $scenarios[self::SCENARIO_GUEST] = ['name','email']; $scenarios[self::SCENARIO_USER] = ['user_id']; return $scenarios; } 我用它如下: $commentModel = Yii::$app->user->isGuest ? new Comment(['scenario' => Comment::SCENARIO_GUEST]) : new Comment(['scenario' => Comment::SCENARIO_USER]); 如果客人查看表单,只检查姓名和电子邮件以及用户填写表单,则不检查任何字段! 解决方法
参见
Yii2 Scenarios
scenario()方法返回一个数组,其键是方案名称,并且值为相应的活动属性.可以大规模分配活动属性并进行验证. public function scenarios() { $scenarios = parent::scenarios(); $scenarios[self::SCENARIO_GUEST] = ['name','date','site','post_id']; $scenarios[self::SCENARIO_USER] = ['user_id','post_id']; return $scenarios; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |