掌握Thinkphp3.2.0----自动完成
自动完成,是在create数据的时候自动执行的一个或多个动作
自动完成也分为动态和静态两种
格式:
//完成规则
array(
array(完成字段1,完成规则,[完成条件,附加规则]),
array(完成字段2,完成规则,[完成条件,附加规则]),
......
);
完成字段:必填,需要的字段名;
完成规则:必填,配合附加规则完成;
完成条件:可选,具体如下:
1.self::MODEL_INSERT 或 1,新增数据的时候处理(默认) ;
2.self::MODEL_UPDATE 或 2,更新数据的时候处理;
3.self::MODEL_BOTH 或 3,所有情况均处理。
附加规则:可选,配合完成规则使用,包括一下规则:
规则 说明
function 函数完成,定义的验证规则是一个函数名
callback 方法完成,定义的验证规则是当前模型类的一个方法
field 用其他字段填充,表示填充的内容是一个其他字段的值
string 字符串(默认)
ignore 为空则忽略(3.1.2新增)
1.静态定义
在模型类里预先定义好该模型的自动完成规则,就是静态定义。
class UserModel s extends Model {
//自动完成
protected $_auto = array(
//自动设置count字段为1
array('count', '1'),
//给密码加密,加密类型为sha1,sha1函数PHP内置
array('user', 'sha1', 3, 'function'),
);
}
为了测试方便,我们可以直接通过模拟提交 POST:
//控制器create()方法自动调用验证
$user = D('User');
$data['user'] = '蜡笔小新';
if ($user->create($data)) {
$user->add();
}
//string,自动设置count字段为1
array('count', '1'),
//function,给密码加密,加密类型为sha1,sha1函数PHP内置
array('user', 'sha1', 3, 'function'),
//把email字段的值填充到user字段冲去
array('user', 'email', 3, 'field'),
//callback,给用户名加前缀
array('user', 'updateUser', 3, 'callback', '_'),
//回调函数
protected function updateUser($str, $prefix) {
return $prefix.$str;
}
//ignore,用于修改时密码留空时,忽略修改
array('pass', '', 2, 'ignore'),
2.动态完成
//动态完成
$rules = array(
array('user', 'sha1', 3, 'function'),
);
$user = M('User');
$data['user'] = '蜡笔小新';
f if ($user->auto($rules)->create($data)) {
$user->add();
}
掌握Thinkphp3.2.0----自动完成的更多相关文章
- jquery获取value值时将数字型字符串前面的0自动截取处理方法
<li class="cwhite" value="02" id="02" onclick="getQuestionList ...
- ODOO v10.0 自动生成财务凭证的科目设置
ODOO v10.0 自动生成财务凭证的科目设置 可以在产品类别及产品档案里设置,建议在产品类别下设置,方便维护. 项目 设置为(具体科目以公司科目表为主) 对应作用业务 Income Account ...
- 怎样在IDEA中使用JUnit4和JUnitGenerator V2.0自动生成测试模块
因为项目的需要,所以研究了一下自动生成测试代码.将经验记录下来,总会有用的.我个人认为,好记性不如多做笔记多反思总结. 1. 前提条件 开发环境已正确配置 工程已解决JUnit依赖关系(pom ...
- yii2.0自动登录功能的实现方法
参考地址:http://www.kuitao8.com/20150518/3747.shtml 自动登录的原理很简单.主要就是利用cookie来实现的在第一次登录的时候,如果登录成功并且选中了下次自动 ...
- Zabbix3.0 自动邮件报障
Zabbix3.0以后,自带的邮件报警支持SSL验证了, 但是仍然没有发送复数个邮箱以及CC,BCC的功能, 因此,我们还是得用别的方法来实现邮件报障. 实现方法有很多种,我用的是PHPmailer. ...
- [读书笔记]C#学习笔记五: C#3.0自动属性,匿名属性及扩展方法
前言 这一章算是看这本书最大的收获了, Lambda表达式让人用着屡试不爽, C#3.0可谓颠覆了我们的代码编写风格. 因为Lambda所需篇幅挺大, 所以先总结C#3.0智能编译器给我们带来的诸多好 ...
- C#学习笔记四: C#3.0自动属性&匿名属性及扩展方法
前言 这一章算是看这本书最大的收获了, Lambda表达式让人用着屡试不爽, C#3.0可谓颠覆了我们的代码编写风格. 因为Lambda所需篇幅挺大, 所以先总结C#3.0智能编译器给我们带来的诸多好 ...
- thinkphp5.0 自动加载
自动加载 概述 ThinkPHP5.0真正实现了按需加载,所有类库采用自动加载机制,并且支持类库映射和composer类库的自动加载. 自动加载的实现由think\Loader类库完成,自动加载规范符 ...
- 【开源】AspnetCore 2.0 自动API文档生成组件,支持protobuffer
本文地址 http://www.cnblogs.com/likeli/p/8204054.html 关于 API文档自动生成,用于对APP端的开发帮助文档生成,默认ProtoBuffer传输格式. 本 ...
- 使用Myeclipse10.0自动生成搭建SSH框架(数据库表自动反向转换成Hibernate实体)实现用户登陆
我这里使用的数据库是mysql5.0 数据是上课用的.这些都不是重点,重要的是学会这个方法: 创建好数据库: create database jboadefault character set utf ...
随机推荐
- Python正则表达式详解
我用双手成就你的梦想 python正则表达式 ^ 匹配开始 $ 匹配行尾 . 匹配出换行符以外的任何单个字符,使用-m选项允许其匹配换行符也是如此 [...] 匹配括号内任何当个字符(也有或的意思) ...
- Redis Cluster搭建方法简介22211111
Redis Cluster搭建方法简介 (2013-05-29 17:08:57) 转载▼ Redis Cluster即Redis的分布式版本,将是Redis继支持Lua脚本之后的又一重磅 ...
- Is there a difference between `==` and `is` in Python?
There is a simple rule of thumb to tell you when to use == or is. == is for value equality. Use it w ...
- C# mongodb 驱动操作(Z)
Query.All("name", "a", "b");//通过多个元素来匹配数组 Query.And(Query.EQ("nam ...
- objccn-图片格式
图像格式存储:位图和矢量图像.位图把值存在阵列中,矢量格式存储的是绘图图像的指令.还有混合格式PostScript能够排布字母甚至位图,使其成为了一个非常灵活的方式.衍生格式pdf. xcdoe6已经 ...
- 【安装Nodejs】CentOS7 下安装NodeJs+Express+MongoDB+Redis
最近想拿NodeJS做个文档管理系统玩玩,看看mongdb的gridfs效率咋样,谁晓得因为一个Yeoman的脚手架,整来整去的把文件权限全部搞乱,一想算了,还是重来搞一套吧! 1.安装 yum i ...
- ping命令执行过程详解
[TOC] ping命令执行过程详解 机器A ping 机器B 同一网段 ping通知系统建立一个固定格式的ICMP请求数据包 ICMP协议打包这个数据包和机器B的IP地址转交给IP协议层(一组后台运 ...
- 【转】如何使用VS 2013发布一个可以在Windows XP中独立运行的可执行文件
问题描述: 用VS2013写好一个程序,在本机上运行一切正常.但是如果直接把exe文件放到另一台机器上用,则会出现: Windows XP:不是一个正常的win32程序 Window 7:缺少msvc ...
- Android -- Activity,Fragment lifecycle
Activity Lifecyce Fragment Lifecycle: 程序运行: 09-16 13:59:22.883 19022-19022/com.example.android.archi ...
- 解决Yii2 启用_csrf验证后POST数据仍提示“您提交的数据无法验证”
一 CSRF 概念 CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XS ...