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号
}
}
?>
ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)的更多相关文章
- thinkphp自动创建数据对象分析
thinkphp有一个自动创建数据对象的create方法,核心代码如下 public function create($data='',$type='') { // 如果没有传值默认取POST数据 i ...
- A.CTable 自动创建数据表
1.添加依赖 <!-- A.CTable 自动创建数据表 --> <dependency> <groupId>com.gitee.sunchenbin.mybati ...
- SpringBoot+Mybatis 自动创建数据表(适用mysql)
Mybatis用了快两年了,在我手上的发展史大概是这样的 第一个阶段 利用Mybatis-Generator自动生成实体类.DAO接口和Mapping映射文件.那时候觉得这个特别好用,大概的过程是这样 ...
- springboot项目启动-自动创建数据表
很多时候,我们部署一个项目的时候,需要创建大量的数据表.例如mysql,一般的方法就是通过source命令完成数据表的移植,如:source /root/test.sql.如果我们需要一个项目启动后, ...
- java使用jxl,自动导出数据excle,quartz自动发送邮件
=============JAVA后台代码===================== package com.qgc.service.autoSendMsg.AutoSendMsg import ja ...
- 自动创建字符设备,不需mknod
自动创建设备文件 1.自动创建设备文件的流程 字符设备驱动模块 -->创建一个设备驱动class--->创建属于class的device--->调用mdev工具(自动完成)--> ...
- hibernate中.hbm.xml和注解方式自动生成数据表的简单实例(由新手小白编写,仅适用新手小白)
绝逼新手小白,so 请大神指点! 如果真的错的太多,错的太离谱,错的误导了其他小伙伴,还望大神请勿喷,大神请担待,大神请高抬贵嘴......谢谢. 好了,正题 刚接触ssh,今天在搞使用.hbm.xm ...
- Spring学习笔记:自动创建Proxy
为什么需要自动创建Proxy 手动为所有需要代理的类用ProxyFactoryBean创建代理Proxy需要大量的配置. 这样如果需要代理的类很多,配置就很繁琐,而且也不便于xml配置的维护. 因此S ...
- bat自动创建快捷方式并更换图标
1 :: 此脚本主要的作用创建1.自动创建快捷方式:2.自动更换快捷方式图标 2 @echo off 3 >nul 2>&1 "%SYSTEMROOT%\system32 ...
随机推荐
- AV_百度百科
AV_百度百科 AV(影片门类)
- The Apache™ Batik Project
Apache(tm) Batik SVG Toolkit - a Java-based toolkit for applications or applets that want to use ima ...
- android圆形进度条ProgressBar颜色设置
花样android Progressbar http://www.eoeandroid.com/thread-1081-1-1.html http://www.cnblogs.com/xirihanl ...
- Linux入门:文件权限、用户、用户组(比较清楚)
单个文件名或目录名长度不超过255字符: 文件或目录的绝对路径长度不超过4096字符: 一.文件所有者与用户组 一个文件有很多属性,包括文件类型.文件权限.文件隐藏权限.文件所有者.用户组 ...
- python之数据库操作(sqlite)
python之数据库操作(sqlite) 不像常见的客户端/服务器结构范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分.所以主要的通信协议是在编程语言内的直接A ...
- 基于visual Studio2013解决C语言竞赛题之1045打印成绩
题目 解决代码及点评 /* 功能:用记录来描述一个学生的成绩情况,内容包括:姓名.学号.数学成绩和PASCAL成绩. 要求对一个小组的10个学生的成绩进行统计处理: 1)计算学生的总 ...
- Swift - 经纬度位置坐标与真实地理位置相互转化
通过CoreLocation类,得到的定位信息都是以经度和纬度等表示的地理信息,通过CLGeocoder类可以将其反编码成一个地址.反之,也可根据一个地址获取经纬度. 1,通过经纬度获取地址 1 2 ...
- tomcat加载时报The web application [/dmscs] created a ThreadLocal with key of type
严重: The web application [/dmscs] created a ThreadLocal with key of type [com.opensymphony.xwork2.inj ...
- shell程序设计(转)
1.shell脚本的基本概念: (1)Shell执行的是称为shell程序,这些程序通常被称为脚本. (2)Shell是一个用户和系统间接口的程序,它允许用户向操作系统输入需要执行的命令. (3)sh ...
- 六款常用的linux C/C++ IDE
摘要: 一.AnjutaAnjuta是一个多语言的IDE,它最大的特色是灵活,同时打开多个文件,内嵌代码级的调试器(调用gdb),应用程序向导(Application wizards)可以方便的帮助你 ...