• 关于模型中的几个概念或知识点


    模型中的属性可以像普通对象属性一样被访问$model->attribute;也可以以数组元素方式访问$model[attribute]。

    属性标签

    获取属性标签

    $model = new appmodelsContactForm;

    // 显示为 "Name"

    echo $model->getAttributeLabel('name');

    场景

    给模型设置场景,有两种方式

    // 场景作为属性来设置
    $model = new User;
    $model->scenario = 'login';

    // 场景通过构造初始化配置来设置
    $model = new User(['scenario' => 'login']);

    可以给模型设置多个场景,如下图:给User模型设置了登陆和注册两个应用场景

    有时你想一条规则只在某个 场景 下应用,为此你可以指定规则的 on 属性,如下所示:

    public function rules()
    {
    return [
    // 在"register" 场景下 username, email 和 password 必须有值
    [['username', 'email', 'password'], 'required', 'on' => 'register'],

    // 在 "login" 场景下 username 和 password 必须有值
    [['username', 'password'], 'required', 'on' => 'login'],
    ];
    }

    块赋值

    $model = new appmodelsContactForm;
    $model->attributes = Yii::$app->request->post('ContactForm');

    或在控制器中这样写

     $model = new ContactForm();

    $model->load(Yii::$app->request->post();

    安全属性

    在场景中列出的属性就是安全属性,只有安全属性才能被块赋值。

    非安全属性

    [[yiiaseModel::scenarios()]] 方法提供两个用处:定义哪些属性应被验证,定义哪些属性安全。 在某些情况下,你可能想验证一个属性但不想让他是安全的,可在scenarios()方法中属性名加一个惊叹号 !。 例如像如下的secret属性。

    public function scenarios()
    {
    return [
    'login' => ['username', 'password', '!secret'],
    ];
    }

    当模型在 login 场景下,三个属性都会被验证,但只有 username和 password 属性会被块赋值, 要对secret属性赋值,必须像如下例子明确对它赋值。

    $model->secret = $secret;

    属性验证rules方法

    public function rules()
    {
    return [
    [['title', 'description'], 'safe'], //这两个属性不需要验证,在验证时候会被过滤
    ];
    }

    数据导出

    模型通常要导出成不同格式,你可能想将模型的一个集合转成JSON或Excel格式, 导出过程可分解为两个步骤,第一步,模型转换成数组;第二步,数组转换成所需要的格式。 你只需要关注第一步,因为第二步可被通用的数据转换器如[[yiiwebJsonResponseFormatter]]来完成。

    将模型转换为数组最简单的方式attributes属性$arr = $model->attributes

    更灵活强大的方式是通过toArray()方法,它是实现 RESTful风格的方式。 $model->toArray()

  • 相关阅读:
    C#基础第五天-作业-用DataTable制作名片集
    C#基础第四天-作业答案-Hashtable-list<KeyValuePair>泛型实现名片
    C#基础第四天-作业-Hashtable-list<KeyValuePair>泛型实现名片
    C#基础第三天-作业答案-集合-冒泡排序-模拟名片
    C#基础第三天-作业-集合-冒泡排序-模拟名片
    C#基础第二天-作业答案-九九乘法表-打印星星
    C#基础第二天-作业-九九乘法表-打印星星
    C#基础第一天-作业答案
    C#基础第一天-作业
    C#-string.Format对C#字符串格式化
  • 原文地址:https://www.cnblogs.com/toward-the-sun/p/4418115.html
Copyright © 2020-2023  润新知