前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Yii2 学习笔记之场景应用

Yii2 学习笔记之场景应用

作者头像
guanguans
发布2018-05-09 16:28:08
6700
发布2018-05-09 16:28:08
举报
文章被收录于专栏:琯琯博客琯琯博客

场景的使用结合验证来操作,场景的意思就是说,在操作某个表对象的时候,会有新增,查询,修改,删除等。这些操作就各自对应一个场景,这样就可以方便的为每个场景进行验证逻辑的代码编写。

1. 创建frontend\models\User.php ,定义其scenarios以及rules
代码语言:javascript
复制
public function scenarios()
{
	//继承了父类的default场景,并新增了一个update场景(只验证和操作一个字段《real_name》)
    return array_merge(parent::scenarios(),[
        'update' => ['real_name'],
    ]);
}

public function rules()
{
    return [
        [['real_name', 'age', 'job_name'], 'required'],
        [['age'], 'integer'],
        [['real_name','job_name'], 'string', 'max' => 50],
        [['created_at'], 'safe'],
    ];
}
2. 在controller中调用时,使用
代码语言:javascript
复制
// 新增时,因为没有设置Scenario,所以引用的是default场景,则是默认所有的rules规则都执行。
public function actionCreate()
{
    $model = new User();

    if ($model->load(\Yii::$app->request->post()) && $model->save()) {
        return $this->redirect(['index']);
    } else {
        $this->layout = 'iframe';

        return $this->render('create', [
            'model' => $model,
        ]);
    }
}

// 修改时候,只对real_name字段进行修改和验证
public function actionUpdate($id)
{
    $model = $this->findModel($id);
    $model->setScenario('update');

    if ($model->load(\Yii::$app->request->post()) && $model->save()) {
        return $this->redirect(['index']);
    } else {
        return $this->render('update', [
            'model' => $model,
        ]);
    }
}

参考连接

http://www.manks.top/how-to-set-scenario-in-yii2.html

(完)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 创建frontend\models\User.php ,定义其scenarios以及rules
  • 2. 在controller中调用时,使用
  • 参考连接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档