ThinkPHP--自动完成

自动完成即对用户提交的数据进行处理,比如:加前缀后缀、去除HTML标记,编号…等等。使用create()方法创建数据是会自动完成的。

完成规则

自动完成一般通过默认字段写入、安全字段过滤以及业务逻辑的自动处理。有两种方式实现自动完成规则:
1、静态方式:在模型类里通过$_auto属性定义处理规则;
2、动态方式:使用模型类的auto方法动态创建自动处理规则。

//完成规则
array(
    array(完成字段1,完成规则,[完成条件,附加规则]),
    array(完成字段1,完成规则,[完成条件,附加规则]),
    ...
);

完成字段:必填,需要的字段名;
完成规则:必填,配合附加规则完成;
完成条件:可选,具体如下:
1、self::MODEL_INSERT或1,新增数据的时候处理(默认);
2、self::MODEL_UPDATE或2,更新数据的时候处理;
3、self::MODEL_BOTH或3,所有情况均处理。

附加规则:可选,配合完成规则使用,包括以下规则:

规则说明
function函数完成,定义的验证规则是一个函数名
callback方法完成,定义的验证规则是当前模型类的一个方法
field用其他字段填充,表示填充的内容是一个其他字段的值
string字符串(默认)
ignore为空则忽略

为了方便测试,直接通过模拟提交post:

//控制器create()方法自动调用验证
$user = D('User');
$data['user'] = '蜡笔小新';
if($user->create($data)){
    $user->add();
}
//string,自动设置count字段为
array('count','1'),
//function,给密码加密,加密类型为sha1,sha1函数为php内置
//该function必须写在Common下的Common文件夹下的function.php
//如果是php内置函数则可直接调用,不需要另写方法,比如sha1或md5加密则可直接调用。

array('user','sha1',3,'function'),
//把email字段的值填充到user字段中去,因为很多时候,用户注册时没有填写昵称或其他,
//所以我们可以把用户填写的email填充到user去当做昵称
array('user','email',3,'field'),
//callback,给用户名加前缀
array('user','updateUser',3,'callback','_'),

//回调函数
protected function updateUser($str,$prefix){
    return $prefix.$str;
}
//igonre,用于修改时密码留空时,忽略修改
array('pass','',2,'ignore');
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值