ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)
原文:ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)
1:自动创建数据
//$name=$_POST['name'];
//$password=$_POST['password']; ---这个注册页面传过来的POST值
下面用了自动穿件create方法就可以不用这个,会行动绑定
$user =M('User');
$User->create(); //会将传过来的$_POST数据对应到数据库的字段
$user->add(); //就可以直接写入
2:自动验证(只需要在Model类里面定义$_validate属性)
使用步骤(注册验证User表)
一:创建User表自定义的Mode --->Home\Lib\Model\UserModel.class.php
<?php
//注意:code username password....都是你表单里面的name值,要对应
//表单里面字段名字定义的
class UserModel extends Model{
protected $_validate=array(
array('code','require','验证码必须填写!'),
array('code','checkCode','验证码错误!',0,'callback',1), //使用回调函数checkCode
array('username','require','用户必须填写!'),
array('username','','用户已经存在',0,'unique',1),
array('username','/^\w{6,}$/','用户名必须6个字母以上',0,'regex',1),
array('repassword','password','确认密码不正确',0,'confirm'),
);
protected function
checkCode($code){
if(md5($code)!=$_SESSION['code']){
return false;
}else{
return true;
}
}
}
?>
//控制请值对应的注册方法
<?php
class RegisterAction extends Action{
public function doReg(){
$user=D('User'); //大D方法是会先去找你自定义的Mode,(使用上面创建的UserModel.class.php类)
//如果有有自定义的用自定义的,否则用原始的 D等同M M!=D
if(!$user->create()){//会自动去验证 返回一个布尔类型,成功则自动创建数据
$this->error($user->getError());//获取具体错误信息
}
$lastId=$user->add();
if($lastId){
$this->redirect('Index/index');
}else{
$this->error('用户注册失败');
}
}
}
?>
3:自动完成(做留言的例子)
步骤:
一:创建Message表自定义的Mode --->Home\Lib\Model\MessageModel.class.php
<?php
class MessageModel extends RelationModel{
protected $_auto=array(
array('time','time',1,'function'),
array('uid','getId',1,'callback')
);
protected function
getId(){
return $_SESSION['id'];
}
}
?>
二:控制器中
<?php
class MessageAction extends Action{
public function doLiuyan(){
$message=D('Message');
//$message->time=time();
//$message->uid=$_SESSION['id']; 这2个值将在自定义MessageModel中自动填充完成
$message->add(); //返回值是新增的id号
}
}
?>
最新文章
- BZOJ 1109: [POI2007]堆积木Klo
- 关于MySQL的SLEEP(N)函数
- spring mvc文件上传和下载
- SoapUI接口测试&#183;第一个HTTP Request接口请求和断言
- java几道简单的面试题目
- Collecting Bugs(POJ 2096)
- 用 CSS 实现字符串截断
- Python面向对象编程——引言
- 2dx解析cocosbuilder中使用layer时的缺陷
- Android基础之响应Menu键弹出菜单Demo
- wormhole提升hivereader读取速度方案
- Socket规划(1)
- SIP DB33标准笔记 监控图像获取
- 【知识整理】这可能是最好的RxJava 2.x 入门教程(四)
- 音频传输之Jitter Buffer设计与实现
- Android 进阶 教你打造 Android 中的 IOC 框架 【ViewInject】 (上)
- IIS+nginx反向代理 负载均衡
- docker配置nginx做反向代理管理tomcat应用
- nginx配置https转发http
- 《梦断代码》Scott Rosenberg著(二)
热门文章
- java.lang.NoClassDefFoundError: ognl/PropertyAccessor解决的方法
- Swift - 使用闭包筛选过滤数据元素
- Android 代码混淆
- Java基础06 组合
- 微信jsSDK开发
- 用Eclipse做Android开发时出现java.lang.NoClassDefFoundError问题
- android怎样实现自动点击功能
- MSSQL - 存储过程Return返回值
- 6.MIL采集和实时显示
- 基于visual Studio2013解决面试题之0410计算二进制中1的个数