原文: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 自动创建数据、自动验证、自动完成详细例子介绍(十九)的更多相关文章

  1. thinkphp自动创建数据对象分析

    thinkphp有一个自动创建数据对象的create方法,核心代码如下 public function create($data='',$type='') { // 如果没有传值默认取POST数据 i ...

  2. A.CTable 自动创建数据表

    1.添加依赖 <!-- A.CTable 自动创建数据表 --> <dependency> <groupId>com.gitee.sunchenbin.mybati ...

  3. SpringBoot+Mybatis 自动创建数据表(适用mysql)

    Mybatis用了快两年了,在我手上的发展史大概是这样的 第一个阶段 利用Mybatis-Generator自动生成实体类.DAO接口和Mapping映射文件.那时候觉得这个特别好用,大概的过程是这样 ...

  4. springboot项目启动-自动创建数据表

    很多时候,我们部署一个项目的时候,需要创建大量的数据表.例如mysql,一般的方法就是通过source命令完成数据表的移植,如:source /root/test.sql.如果我们需要一个项目启动后, ...

  5. java使用jxl,自动导出数据excle,quartz自动发送邮件

    =============JAVA后台代码===================== package com.qgc.service.autoSendMsg.AutoSendMsg import ja ...

  6. 自动创建字符设备,不需mknod

    自动创建设备文件 1.自动创建设备文件的流程 字符设备驱动模块 -->创建一个设备驱动class--->创建属于class的device--->调用mdev工具(自动完成)--> ...

  7. hibernate中.hbm.xml和注解方式自动生成数据表的简单实例(由新手小白编写,仅适用新手小白)

    绝逼新手小白,so 请大神指点! 如果真的错的太多,错的太离谱,错的误导了其他小伙伴,还望大神请勿喷,大神请担待,大神请高抬贵嘴......谢谢. 好了,正题 刚接触ssh,今天在搞使用.hbm.xm ...

  8. Spring学习笔记:自动创建Proxy

    为什么需要自动创建Proxy 手动为所有需要代理的类用ProxyFactoryBean创建代理Proxy需要大量的配置. 这样如果需要代理的类很多,配置就很繁琐,而且也不便于xml配置的维护. 因此S ...

  9. bat自动创建快捷方式并更换图标

    1 :: 此脚本主要的作用创建1.自动创建快捷方式:2.自动更换快捷方式图标 2 @echo off 3 >nul 2>&1 "%SYSTEMROOT%\system32 ...

随机推荐

  1. NYOJ10,skiing

    skiing 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描写叙述 Michael喜欢滑雪百这并不奇怪, 由于滑雪的确非常刺激.但是为了获得速度,滑的区域必须向下倾斜,并且 ...

  2. c++,初始化列表

    类对象的构造顺序是这样的: a.分配内存,调用构造函数时,隐式/显示的初始化各数据成员 b.进入构造函数后在构造函数中执行一般计算 1.初始化类的成员有两种方式,一是使用初始化列表,二是在构造函数体内 ...

  3. Java基础08 继承

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 继承(inheritance)是面向对象的重要概念.继承是除组合(composit ...

  4. hdu1151Air Raid

    Air Raid Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  5. Delphi的RTTI还分为对类和对象的判断,以及对普通属性的判断——相比之下,C++的RTTI实在太弱!

    堂堂C++沦落到这个地步,也实在是够可怜的.

  6. linux系统挂掉问题的分析

    玩linux系统,经常遇到的一件事就是做了某个操作之后系统会突然挂掉,这要怎么办? 1. 首先我们要看log,看看是否会留下一些蛛丝马迹,比如PC/LR是否有留下来. PC是ARM的一个寄存器,即程序 ...

  7. CEGUI 输入法窗口实现

    游戏中经常要输入汉字,但当我们游戏没有自己实现输入法窗口时,windows会使用用户安装的输入法,但这个输入法窗口只会显示在游戏窗口外头,而且当我们游戏全屏时(真全屏,不是那种窗口式的假全屏),屏幕上 ...

  8. linux命令:rm

    删文件要一个个回答y,谁有好办法自动删除? rm -rf 用rm递归删除目录下面的所有.o文件: find . -name "*.o"  | xargs rm -f :

  9. 基于visual Studio2013解决面试题之0707最小元素

     题目

  10. 1.0.x-学习Opencv与MFC混合编程之---视频运动检测

    源代码地址: http://download.csdn.net/detail/nuptboyzhb/3961668 版本1.0.x新增内容 视频运动检测 Ø 新建菜单项,Learning OpenCV ...