700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > php怎么弄自动填充 ThinkPHP 自动填充(自动完成)详解及实例

php怎么弄自动填充 ThinkPHP 自动填充(自动完成)详解及实例

时间:2021-03-22 02:05:02

相关推荐

php怎么弄自动填充 ThinkPHP 自动填充(自动完成)详解及实例

ThinkPHP 自动填充

ThinkPHP 内置了数据对象的自动填充功能,可以用来处理默认值、数据过滤以及其他系统写入字段的自动处理。

要使用自动填充功能,只需要在对应的 Model类 里面定义 $_auto 属性(由多个验证因子组成的数组)。$_auto 属性是由多个填充因子组成的数组,语法格式如下:

protected $_auto = array(

array(填充字段,填充内容[,填充条件][,附加规则])

};

ThinkPHP自动填充格式说明:

填充因子

说明

填充字段

必须。需要填充的表单字段,这个字段不一定是数据库字段,也可以是表单的一些辅助字段,例如验证码等。

填充内容

必须。要对字段自动填充的内容。

填充条件

可选。包括:

Model:: MODEL_INSERT 或者 1 :新增数据时候填充(默认)

Model:: MODEL_UPDATE 或者 2 :更新数据时候填充

Model:: MODEL_BOTH 或者 3 :全部情况下填充

附加规则

可选。包括:

string:字符串,表示填充内容为字符串(默认)

function:使用函数,表示填充的内容是一个函数返回值

callback:使用方法,表示填充的内容是一个当前 Model 的方法返回值

field:字段,表示填充的内容是一个其他字段的值

自动填充例子

用户注册或修改资料时,可能用到的自动填充例子:

class UserModel extends Model{

protected $_auto = array (

// 新增的时候把status字段设置为1

array('status','1'),

// 对password字段在所有情况下使用md5函数处理

array('password','md5',3,'function'),

// 对username字段在新增时回调getName方法

array('username','getName',1,'callback'),

// 对regdate字段在新增时写入当前时间戳

array('regdate','time',1,'function'),

// 对regip字段在新增时写入用户注册IP地址

array('regip','get_client_ip',1,'function'),

);

}

和自动验证一样,自动完成机制需要使用 create 方法才能生效:

$Article = D("User");

if(!$User->create()){

// 如果创建数据对象失败(可能是验证未通过等),输出错误提示信息

exit($Article->getError());

}else{

// 继续下一步流程如将数据写入数据表

}

提示

与自动验证不同的是,自动填充无效时(如调用一个不存在的函数或自动填充的字段不存在等)并不导致创建数据对象(create())失败,只能通过调试或实际数据入库来检测自动填充是否正确有效。

动态改变自动完成规则

和自动验证一样,可以在操作方法中使用 setProperty方法 动态的更改自动完成的规则:

$Dao = D("User");

$auto = array (

// 仅对password字段进行处理

array('password','md5',1,'function')

);

$User->setProperty("_auto",$auto);

if(!$User->create()){

……

}

M方法中使用自动填充功能

充分利用功能强大的 ThinkPHP 自动填充(自动完成)功能,能够快捷简便的构建表单入库数据,程序结构也会更加明晰。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。