zoukankan      html  css  js  c++  java
  • yii2 model源码解读

    模型yiiaseModel

    模型主要实现了验证规则和验证器确保输入的数据是安全和正确的.

    模型的流程:

    • 1.从请求中读取数据.使用load或者loadMultiple或者手动赋值.load会根据formName(model名)从POST或者GET获取数据,并存储为特性.如果load中post没有数据则返回false,可以通过这个判断是否进行下去
    • 2.使用validate或者validateMultiple,对数据进行验证,会返回一个指示验证是否成功的值,验证成功可以进行其他操作了..这里会触发两个事件.分别为:EVENT_BEFORE_VALIDATE和EVENT_AFTER_VALIDATE
    • 3.验证失败的话可以使用getErrors和getFirstErrors以及getFirstError获取错误信息

    模型实现了迭代器和数组访问接口,所以可以像下面这样使用:

    	$user = new User();
    	$user["name"] = "sss"
    
    	foreach( $user as  $key=>$value){
    		.....
    	}
    
    

    SCENARIO 场景

    常用于规则中,场景的默认值为:default.可以在控制器中不同的动作里实例化模型,赋值不同的场景.这样验证规则就会基于此模型的场景进行判断.

    	$user = new User();
    	$user->scenario = "login"..登录场景
    

    RULE 规则

    其中 AttributeList(特性列表) 是需要通过此规则验证的特性列表字符串,每个特性名字由逗号分隔; Validator(验证器) 指定要执行验证的种类;on 参数是可选的,它指定此规则应被应用到的场景列表; 附加选项是一个名值对数组,用于初始化相应验证器的属性值。

    	 [
    	      ['attribute1', 'attribute2'],
    	      'validator type',
    	      'on' => ['scenario1', 'scenario2'],
    	      ...other parameters...
    	  ]
    

    验证器

    规则的第二个属性就是验证器,验证器有三种类型:

    第一, Validator 可以是模型类中一个方法的名字

    第二,Validator 可以是一个验证器类的名字,当此规则被应用时, 一个验证器类的实例将被创建以执行实际验证。规则中的附加选项用于初始化实例的属性值。

    第三,Validator 可以是一个预定义的验证器类的别名。详情见validator目录下

    safe验证器:

    某个特性位于一个场景中则代表是安全的.保证所有的特性都被验证过..如果一个特性未属于任何一个场景时,在使用load或者setAttributes的时候会抛出异常

    请记住,验证规则是用于检查用户输入的数据,而不是检查我们在代码中生成的数据(例如时间戳,自动产生的主键)。 因此,不要 为那些不接受最终用户输入的特性添加验证规则。

    那对于我们自己生成的数据或者一个特性,即使不用为它指定任何规则,就可以使用safe验证器了,将不会经过验证

    特性标签

    当设计表单时,我们通常需要为每个表单域显示一个标签。 标签告诉用户他应该在此表单域中填写什么样的信息。虽然我们可以在视图中硬编码一个标签, 但如果我们在相应的模型中指定(标签),则会更加灵活方便

    可以在model中使用attributeLabels方法覆盖父类设置模型标签..然后使用getAttributeLabel获取某一个特性的标签名

  • 相关阅读:
    百度云管家开机启动如何取消
    双语小说阅读:《谁动了我的奶酪》
    [Swift]方法
    Swift中的类型属性(静态变量)
    Swift 学习之二十一:?和 !(详解)
    苹果Swift可为Windows/Android开发软件了
    iOS7下滑动返回与ScrollView共存二三事
    swift c++ oc 混编
    RTOS
    STM32 RTC
  • 原文地址:https://www.cnblogs.com/zhepama/p/3550854.html
Copyright © 2011-2022 走看看