create的各种形式(create的固定搭配)

create() 方法将自动收集提交的表单数据并创建数据对象而无需人工干预,这在表单数据字段非常多的情况下更具优势。

create() 创建数据对象后,将自动收集提交过来的表单数据。而表单数据可能需要经过一定加工(例如将密码加密)才能写入数据表,所以可以对数据对象的成员属性值根据进行修改或添加去除等。

提示:create() 创建的数据对象存放于内存,在执行入库动作add() 或 save()之前,都可以进行修改。

create() 方法还具备:

① 令牌验证② 数据自动验证③ 字段映射支持④ 字段类型检查⑤ 数据自动完成

1.create方法可以对POST提交的数据进行处理(通过表中的字段名称与表单提交的名称一一对应关系自动封装数据),例如

user表中有一个字段名叫”username”,

如果表单中有一个<input
name=”username” value=”小明”>,

那么$User = M(‘User’); $data =
$User->create(); echo
$data[‘username’];

就会输出”小明”,不用你用$_POST[‘username’]去接收。

若form和表的字段无对应关系,则

html:

<input name=”less” type=”text”/> <br> <input name=”name” type=”text”/><br> <input name=”savename” type=”password”/><br>

php:

$data = $docs->create(); dump($data); dump($_POST);

结果:$data只会记录和数据库字段对应的数据,非数据库字段自动忽略。

array(2) { [“name”] => string(5) “admin” [“savename”] => string(6) “123456”}array(4) { [“less”] => string(0) “” //在$data中被过滤掉了 [“name”] => string(5) “admin” [“savename”] => string(6) “123456” [“sub”] => string(6) “鎻愪氦”

}

# 如果create带参数$input,则form数据不存在。create只有input数据

$input[‘name’] = ‘ThinkPHP’; $data = $docs->create($input); dump($data);

2.用create方法可以对表单进行令牌验证,防止表单重复提交。

3.可以对数据自动验证,前提是你必须手动在Model文件夹中建立一个UserModel.class.php文件,在其中加入验证规责 protected $_validate = array( array(‘username’,’require’,’用户名必须’, 1), );

4.可以对字段自动赋值,前提还是必须手动在Model文件夹中建立一个UserModel.class.php文件,在其中加入 protected $_auto = array( array(‘create_time’,’time’,self::MODEL_INSERT,’function’), ); 那么user的注册时间将自动赋值为当前时间

最大的作用是自动获取表单数据并完成一系列的操作和过滤(通过自动验证、自动完成、令牌验证等等)。

create方法创建的数据对象是保存在内存中的,并没有实际的写入到数据库中。

1

发表评论

登录后才能评论