文档章节

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
博文 265
码字总数 89754
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

一个可能的NEO链上安全随机数解决方案

0x00 困境 链上安全随机数生成应该算是一个比较蛋疼的问题,哪怕你的系统再牛逼,合约程序困在小小的虚拟机里,哪怕天大的本事也施展不开。 更悲催的是,交易执行的时候,是在每一个节点都执...

暖冰
今天
1
0
【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部