因为在使用create()自动验证,自动完成后,我还要进行一些子数据处理操作,所以使用$data数组来传递数据,这个$data数据在自动完成前使用到,还要传递到自动完成之后,有一些处理技巧,请仔细看我的注释。
关键代码如下:
CustomController.php
//获取表单数据
$data["memo"]=I("post.memo");
$data["userid"]=I("post.userid");
if($data["userid"]==""){
$this->error("请选择 “用户”");
}
$User = D("Userinfo");
//使用create()自动检测用户信息,并加入自动完成的内容
//插入时检测,数据源指定为$data(默认是$_POST)
$custom=$User->create($data,1);
//检测通过后的数据全部取出要在后面用到,使用$custom保存数据
if($custom!==false){
//此时$custom中的数据包括了$data的全部有效数据和自动完成的数据
//子数据处理操作
//创建我的客户信息
$rec=array();
$rec['pname']=I("post.pname");
$rec['pmob']=I("post.pmob");
//$custom["customid"],此数据要插入到主表Userinfo中
$custom["customid"] = M("custom")->add($rec);
//为$custom再新增一些其他数据
$custom["userid_new"]=session("user_auth.uid");//自动完成好象取不出session
//保存数据,创建主记录
//使用的数据源是$custom
$result = $User->add($custom);
if(false !== $result){
$this->success("新记录创建成功!",U("userInfo",array("id"=>$result)));
}else{
$this->error("记录创建失败,请稍后再试!");
}
}else{
$this->error($User->getError());
}UserinfoModel.php protected $_validate=array(
array('memo','require','请填写 “注释”!'),
);
protected $_auto = array(
//这是要自动完成的数据,没找到解决方法之前怎么也插入不到数据库中,害死人啊!!
array('user_no', '333', self::MODEL_INSERT),
array('status', 1, self::MODEL_INSERT),
array('addtime', NOW_TIME, self::MODEL_INSERT),
);(完) 最佳答案