专栏首页琯琯博客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 开发小技巧

    琯琯
  • PHP二叉树(二):二叉搜索树

    琯琯
  • Yii2 学习笔记之 GridView DetailView

    琯琯
  • Apache-Hive 使用MySQL存储Hive的元数据

    默认情况下,Hive的元数据是存储到Derby中的,这是Apache的一个纯Java编写的小巧数据库,类似于Sqlite。但是这样就会出现一个情况:Derby是...

    泰坦HW
  • Dubbo实现的源码分析

    Dubbo是阿里巴巴开源出来的一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及作为SOA服务治理的方案。它的核心功能包括:

    烂猪皮
  • Django源码学习-3-Model-下

    Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(...

    小团子
  • 2019年,我国要推进哪些文旅工程项目?

    ? 2019年是新中国成立70周年,是全面建成小康社会关键之年。 《报告》表示,2019年,要以习近平新时代中国特色社会主义思想为指导,全面贯彻党的十九大和十...

    腾讯文旅
  • 零基础如何学好python之变量

    想要自学python,变量(variable)是必经之路,它是学习python初始时,就会接触到的一个新的知识点,也是一个需要熟知的概念。python是一种动态...

    小小科
  • 随机信号频谱分析用PSD的原因

    “正弦信号频谱分析多用幅值谱,单位是g。随机信号频谱分析多用功率谱密度PSD (Power Spectrum Density),单位是g2/Hz。是否只是使用习...

    用户7573907
  • 什么是白帽SEO?-大脸猫百科

    例如,一个网站是搜索引擎优化,但侧重于相关性和有机的排名被认为是使用白帽SEO技术进行优化。

    大脸猫

扫码关注云+社区

领取腾讯云代金券