zoukankan      html  css  js  c++  java
  • YII load() validate() save()

    $model->load($post) 还要不要 && $model->validate()一起用?

    更新和添加数据的时候有区别吗?

    还有 model 里没写rules的时候 load()会不会成功?

    load()会不会验证rules里的规则?还是要validate()的时候才验证rules?

    --------------------------------------------------------------------------------------------------------------------

    1、load()与validate()要一起用   load()只是加载数据,validate()才是验证。

    2、更新和添加都用save()   可以不用validate(),因为save方法会先调用validate()再执行insert()或者update()。yii通过$model->isNewRecord 来判断是不是一条新纪录,然后调用insert()或者update()。

    3、load()和setAttributes()方法都属于批量赋值,yii为了保护数据的安全性,是禁止批量赋值的,但是当数据符合rule规 则的时候就可以批量赋值了,所以没写rules就不能用load()。

     

    4、就算某个字段不需要什么规则,用户输入什么都可以,那么要把这个字段的规则设置safe,一般gii生成的model最后一行都是safe的。(本条很实用!!!)

    5、当你调用 save()、insert()、update() 这三个方法时,会自动调用yiiaseModel::validate()方法  

    -----------------------------------------------------------------------------------------------------------------------

    要一起用,load()只是加载数据,validate()才是验证。
    更新和添加都用save(),yii通过$model->isNewRecord 来判断是不是一条新纪录,然后调用insert()或者update()

    load()setAttributes()方法都属于批量赋值,yii为了保护数据的安全性,是禁止批量赋值的,

    但是当数据符合rule规则的时候就可以批量赋值了,所以没写rules就不能用load()

    就算某个字段不需要什么规则,用户输入什么都可以,那么要把这个字段的规则设置safe,一般gii生成的model最后一行都是safe的

    你可以不用validate(),因为save方法会先调用validate()再执行insert()或者update()(看源码就知道)。

    ------------------------------------------------------------------------------------------------------

    $model->load()的作用是什么呢?

    成功代表的是有值。而你的值是request->post()获取的,所以代表的是有post值。
    load()的作用是批量填充模型。因为你会在load前面发现 $model = new Model。此时的 $model 是 new 出来的,是新的,只是个骨头架子,纸老虎,所以它迫切需要一些值来填充自己,否则它除了能为前端 ActiveForm 提供一些JS验证外,屁用没有。而此时,load() 应运而生。
    而解决温饱飞黄腾达之后,Yii 会审视 $model。这小子做的这些事符不符合我给他定的规矩。于是Yii 根据 $model 调用了你接下来看到的 validate(),然后不合规矩就干掉他,即使他是苍蝇或者老虎。所以验证部分 load() 不会去做,而是交给了 validate()。就像贪官能发现自己是贪官吗?

  • 相关阅读:
    gorm 创建数据时字段跟结构体不一致
    查看端口信息
    Mysql 新建用户 并指定能访问的数据库权限
    网页端实现快速播放(有些网页不让快进.....的解决办法)
    Mybatis Map保存到数据库,Mybatis Map动态同步表,Mybatis Map Foreach插入数据库
    Java 获取Exception详细信息,Java获取异常详细内容
    weblogic禁用IIOP协议,weblogic CVE-2020-2551漏洞修复
    IntelliJ IDEA安装配置,IntelliJ IDEA配置Maven,IntelliJ IDEA设置热部署
    Java URL链接动态添加参数,Java URL链接删除参数,UrlUtils链接参数工具类
    Oracle weblogic隐藏console,weblogic修改控制台console入口
  • 原文地址:https://www.cnblogs.com/wangshuazi/p/9518511.html
Copyright © 2011-2022 走看看