文档章节

Yii学习笔记::模型自动完成

吾爱
 吾爱
发布于 2013/12/29 20:02
字数 431
阅读 830
收藏 4

首先Yii模型是没有自动完成这个功能的,它只有验证validate()。

当我们调用AR模型的save()功能时,会自动调用validate(),紧接着数据就入库了。

现在我表单中获取到密码的字段,我入库前肯定要进行加密啊,还有注册时间字段,也需要自动生成一个时间戳,在手册里我找到一个 

$post->create_time=new CDbExpression('NOW()');

这玩意是数据库里的函数啊,无法做到复杂的逻辑啊!!

怎么办?想啊想,想到了事件功能,我找啊找,打开validate()的源码,发现有两个事件:beforeValidate() afterValidate()。

到这里思路就比较清晰了,我们的目的就是入库前填充或修改一些字段,那么我们从 afterValidate()这个方法入手就行了。

我们发现,这个方式里是有内容的,主要就是触发事件用的,我们这里不那么麻烦去注册事件了,直接在自己的模型类里面重载它,当然不要忘了parent::afterValidate();不然事件钩子就没了。

    //验证前的数据处理
    public function afterValidate(){
        parent::afterValidate();
        $this->password = md5($this->password);
        $this->password1 = md5($this->password1);
        $this->addtime = time();
        $this->expire = time()+86400*3;
        return true;
    }

看,这就是达到了自动完成的效果,最后返回true即可。

© 著作权归作者所有

共有 人打赏支持
吾爱
粉丝 142
博文 264
码字总数 89585
作品 0
后端工程师
加载中

评论(3)

荒野无灯
荒野无灯

引用来自“~\(≧▽≦)/~”的评论

建议在bforesave事件中处理
+1 . 像上面文章中那样用的话,如果定义了一个password max length 是16 ,那么md5后变32位,会导致validate失败.在 beforeSave 中做如上自动完成动作是最好的.
~\(≧▽≦)/~
~\(≧▽≦)/~
建议在bforesave事件中处理
别人说我名字很长
别人说我名字很长
这个吊啊老爱,很实用
Yii学习笔记:利用setFlash和runController打造个性化的提示信息页面

在实现Yii::success()这样的调用方式之前,你可能需要阅读我的这篇博文: 《Yii学习笔记:扩展YiiBase入口类》 之后请继续往下看: 首先我们在yii.php的Yii类里面添加两个方法: /** 成功提示...

吾爱
2013/12/28
0
0
技术积累笔记概要

2015年11月24日 1、rest 速率限制,写属于自己的方法。 2、actions方法深刻了解。 3、YII技术博客:http://blog.csdn.net/terrywater/article/category/2565815。 4、静态方法传递参数的习惯...

风清扬-深圳
2015/11/24
78
0
Yii学习笔记:扩展YiiBase入口类

通过yiic.php自动创建一个应用后,入口文件初始代码如下: <?php// change the following paths if necessary$yii=dirname(FILE).'/../yii/framework/yii.php';$config=dirname(FILE).'/prot......

吾爱
2013/12/27
0
1
yii2学习笔记--修改css和js文件(未完成)

(未完成,陆续添加内容) 一、通过模板文件添加的js和css如何修改: 1.1 修改AppAsset.php之中的css、js 假设模板文件为 views/layouts/main.php,观测可知其中有一句: AppAsset::register...

路过暴风
2016/01/06
813
1
Yii2框架图解

Yii2框架图解 Love冥天个人博客-关注IT|PHP|互联网|php个人博客交流2017-11-281 阅读 yii2Yii2 图片根据Yii类参考手册,Yii源代码,开发常用方法构成. 1.yii2 控制器类图 2.yii2 cookie 类图...

Love冥天个人博客-关注IT|PHP|互联网|php个人博客交流
2017/11/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如果彻底的卸载 visual-studio-code

C:\Users\Administrator\AppData\Roaming 我安装了visual-studio-code ,然后配置了 一堆东西。 现在我不需要了,我希望是 卸载 visual-studio-code ,然后来一个干净的visual-studio-code ...

之渊
10分钟前
0
0
[DOM] Found 2 elements with non-unique id

在同一个html文件中两个id都相同,所以才会出现上面问题。 参考路径: https://pdf-lib.org/Home/Details/5866

度_
26分钟前
0
0
Java 异常处理的误区和经验总结

前言 本文着重介绍了 Java 异常选择和使用中的一些误区,希望各位读者能够熟练掌握异常处理的一些注意点和原则,注意总结和归纳。只有处理好了异常,才能提升开发人员的基本素养,提高系统的...

小致dad
33分钟前
0
0
dropWhile删除从第一个元素开始匹配,匹配失败则停止匹配

val set1=Set("a","b","c") val set2=Set("c","d","e") var set3=set1.drop(2) println(s"set3 drop first tow element : $set3") val set5=set1 drop 2 println(s"set1 ......

freeli
38分钟前
0
0
hive udf、udaf、udtf

1、UDF:用户定义(普通)函数,只对单行数值产生作用; 实现方法: 1. 继承UDF类 2. 重写evaluate方法 /** * @function 自定义UDF统计最小值 * @author John * */...

张欢19933
46分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部