文档章节

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

吾爱
 吾爱
发布于 2013/12/29 20:02
字数 431
阅读 830
收藏 4
点赞 0
评论 3

首先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
博文 257
码字总数 89193
作品 0
后端工程师
加载中

评论(3)

荒野无灯
荒野无灯

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

建议在bforesave事件中处理
+1 . 像上面文章中那样用的话,如果定义了一个password max length 是16 ,那么md5后变32位,会导致validate失败.在 beforeSave 中做如上自动完成动作是最好的.
~\(≧▽≦)/~
~\(≧▽≦)/~
建议在bforesave事件中处理
别人说我名字很长
别人说我名字很长
这个吊啊老爱,很实用
技术积累笔记概要

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

风清扬-深圳 ⋅ 2015/11/24 ⋅ 0

yii2学习笔记--修改css和js文件(未完成)

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

路过暴风 ⋅ 2016/01/06 ⋅ 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

5月YII2学习总结

5月份YII2学习任务基本上告一段落了,总体感觉只是简单学习了YII2,可以进行基本的应用开发,文档没有全部看完,自己简单做了一个QA问答系统进行练手。 QA问答系统功能: 1、登陆、注册、收藏...

卖小女孩的小火柴 ⋅ 2015/05/25 ⋅ 2

Yii2 实例管理

Yii2 实例管理 Yii2框架没有提供类似ZendFramework3中提供的ServiceManager.那么Yii2框架是如何管理对象实例的呢? 长时间使用Yii2框架的童鞋一定已经适应了对象中的public变量,以及一个来自y...

Vett ⋅ 2017/12/23 ⋅ 0

YII2 接口文档工具--yii2-doc

YII2接口文档工具: 使用注释自动生成基于YII2的接口文档,自动获取模型中注释。 安装方式 composer require chatfeed/yii2-doc "*" 配置 'module'=>[ 'doc' => [ 'class' => 'cfddocModule'...

匿名 ⋅ 01/08 ⋅ 0

使用Yii2时遇到的实际问题

最近一直在学习Yii2框架,可能是一直以来对它的青睐,让我难以对其它框架再产生兴趣,学习中遇到了许多问题,于是把问题和解决办法也记录下来,这样方便以后复习和交流。 ## 目录 扩展XmlRe...

小田天 ⋅ 2016/12/09 ⋅ 0

YII2操作mongodb笔记

操作之前得保证已经安装了mongodb,windows下安装可参考另一篇博文: http://my.oschina.net/chinahub/blog/479268 componets配置: 'mongodb' => [ 'class' => 'yiimongodbConnection', 'd......

风清扬-深圳 ⋅ 2015/12/17 ⋅ 0

yii2开发中19条推荐实践(阿北总结)

虽然每个人的编程风格不同,但是有些建议能让你的代码更加规范和稳定,本次就我这次网站更新总结如下几点,希望对你的yii2学习和使用有所帮助。 环境说明 服务器环境: CentOS 开发环境及IDE...

阿北2017 ⋅ 06/02 ⋅ 0

liufee/yii2-swoole

yii2 swoole 让yii2运行在swoole上。如果您在使用中遇到问题或者想学习yii2结合swoole可以加qq群258780872一起讨论 性能 运行在swoole上的yii2是运行在php-fpm上yii2的5倍以上,而且一句代码...

liufee ⋅ 2017/12/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 50分钟前 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 7

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部