自动完成,是在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();
}

最新文章

  1. Android Weekly Notes Issue #231
  2. SQLServer中的数据库备份和还原
  3. JS生成1000个数字加字母的不重复的随机字符串
  4. Java中字符串的几个实例
  5. jquery隐藏table表格的某一列
  6. R语言实战
  7. ios中怎么样转行大小写
  8. PHP实现Web Service(转)
  9. ANDROID_MARS学习笔记_S01原始版_013_广播机制二
  10. javascript中event.keycode大全
  11. 《SDN核心技术剖析和实战指南》3.1控制器核心技术读书笔记
  12. winform屏幕截图
  13. Ambari中添加新服务
  14. 6. React 表单使用介绍
  15. ccflow表机构与运行机制(二次开发必看)
  16. redis:set集合类型的操作(无序集合)
  17. vue的饿了么写作感受
  18. vue-router 知识点记录
  19. git 自动转换行符的坑爹案例
  20. 6 Django系列之关于models的sql语句日常用法总结

热门文章

  1. 【MySQL】Create table 以及 foreign key 删表顺序考究。
  2. Socket通信(二)
  3. winfrom 隐藏任务栏(win7)
  4. effective OC2.0 52阅读笔记(六 块与大中枢派发)
  5. Spring读写xml文件
  6. iOS 获取沙盒路径方法
  7. C# 使用SqlBulkCopy类批量复制大数据
  8. 1 javascript 核心语言笔记
  9. Swift - 进度条(UIProgressView)的用法
  10. POJ 3294 Life Forms 后缀数组+二分 求至少k个字符串中包含的最长子串