Yii2 Model scenarios 使用注意

10-15 00:31 字数 415 阅读 139 已编辑

在模型中重写 scenarios 注意一定不要覆盖父类的场景,比如下面这么写是不对的。

public function scenarios()
{
    return [
        'create' => ['title', 'slug', 'icon', 'description', 'verifyCode']
    ];
}

父类自带一个 default 场景,这样写会覆盖掉 default 场景,导致调用 model 的 validate 方法时报错,并且这样写前台的验证也会失效。

正确的写法应该是合并返回父类的场景

public function scenarios()
{
    $scenarios = parent::scenarios();
    $scenarios['create'] = ['title', 'slug', 'icon', 'description', 'verifyCode'];
    return $scenarios;
}

详情参考 https://www.yiichina.com/question/3042

2人点赞>
关注 收藏 改进 举报
5 条评论
排序方式 时间 投票
kittyfamous

return array_merge(
   parent::scenarios(),
   [
      'create'=> ['title','slug','icon','description','verifycode']
   ]
);

Up骚年
嗯,一个意思。
Up骚年
其实评论是支持Markdown的
查看全部4条回复 >>
请登录后发表评论