专栏首页琯琯博客Yii2 学习笔记之场景应用

Yii2 学习笔记之场景应用

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

1. 创建frontend\models\User.php ,定义其scenarios以及rules

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中调用时,使用

// 新增时,因为没有设置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

(完)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Yii2 学习笔记之 Gii

    guanguans
  • Yii2 学习笔记之 GridView DetailView

    guanguans
  • Yii2 学习笔记之分页

    guanguans
  • Yii2 学习笔记之助手类

    guanguans
  • Yii2 学习笔记之国际化

    guanguans
  • Yii2 学习笔记之发送邮件

    guanguans
  • Yii2 学习笔记之数据库篇

    guanguans
  • Yii2 学习笔记之验证规则

    guanguans
  • Yii2 学习笔记资源引用

    guanguans
  • Redis笔记(七):Redis应用场景

    Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

    朝雨忆轻尘
  • Yii2 学习笔记之数据提供者

    guanguans
  • Yii2 学习笔记之 Session 跨域共享

    guanguans
  • yii2开发中19条推荐实践

    这个是做yii2开发的基石,除非没有办法使用,否则请不要放弃,除了更容易的安装yii2及第三方扩展外,能使用Composer代表着你的服务器最少能运行起来php...

    阿北
  • loadrunner 场景设计-学习笔记之性能误区

    请求,从客户端-->网络-->服务器,中间的数据传递是需要时间的,所以10000个并发用户不一定同时到达服务器端,即每秒并发用户数 != 每秒并发请求数

    授客
  • yii2实战之初见端倪PHP框架大PK安装yii2项目初始化配置服务小结

    章鱼喵
  • 在MySQL里,有个和in一样的东东叫做exists,但是它比in更牛叉,你会么? 转

    是的,这是MYSQL的exists关键词,今天我们就来说说这个exist,为了给大家更清楚的讲解,先给大家说下本文目录:

    双面人
  • Oracle开窗函数笔记及应用场景

    oracle开窗函数使用的话一般是和order、partition by、row_number()、rank()、dense_rank()几个函数一起使用

    SmileNicky
  • 《我的PaddlePaddle学习之路》笔记八——场景文字识别

    在前两篇文章验证码端到端的识别和车牌端到端的识别这两篇文章中其实就使用到了场景文字识别了,在本篇中就针对场景文字识别这个问题好好说说。

    夜雨飘零
  • 五毛的cocos2d-x学习笔记05-场景与场景动画,动作

    用户1737026

扫码关注云+社区

领取腾讯云代金券