原文: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. 趋势科技4月移动client病毒报告

    2014年4月移动client安全威胁概况 截至2014年4月30日,中国区移动client病毒码1.669.60,大小9,792,484字节,能够检測病毒约221万个.移动client病毒约12万个 ...

  2. anroid里面的post请求

    一.需要用到的场景 在jQuery中使用$.post()就可以方便的发起一个post请求,在android程序中有时也要从服务器获取一些数据,就也必须得使用post请求了. 二.需要用到的主要类 在a ...

  3. Action的返回值类型总结

    Action的返回值 MVC 中的 ActionResult是其他所有Action返回类型的基类,下面是我总结的返回类型,以相应的帮助方法: 下面是这些方法使用的更详细的例子 一.返回View     ...

  4. vbox要手动mount才能挂载windows的共享文件夹(好用,不用安装samba了)

    mount -t vboxsf BaiduShare /mnt/bdshare/ 我按照这篇文章成功: http://www.wuji8.com/meta/448016166.html 其它参考: h ...

  5. [置顶] RFS的web自动化验收测试——常见问题指引

    引言:什么是RFS——RobotFramework+Selenium2library,本系列主要介绍web自动化验收测试方面. ( @齐涛-道长 新浪微博) 下面的内容还没整理好,先发个问题解决机制吧 ...

  6. 最简单的基于FFMPEG+SDL的视频播放器 ver2 (採用SDL2.0)

    ===================================================== 最简单的基于FFmpeg的视频播放器系列文章列表: 100行代码实现最简单的基于FFMPEG ...

  7. delphi程序设计之底层原理(有些深度)

    虽然用delphi也有7,8年了,但大部分时间还是用在系统的架构上,对delphi底层还是一知半解,今天在网上看到一篇文章写得很好,虽然是07年的,但仍有借鉴的价值. 现摘录如下: Delphi程序设 ...

  8. 设置MyEclipse中代码的换行长度

    1.打开Preferences -> Java -> Code Style -> Formatter. 2.选择Edit -> Line Wrapping  -> Max ...

  9. Html.Partial("")与Html.RenderPartial("")区别

    文章有点长,但大多是代码,看看很快的,不要压力太大.网上有很多关于这两个方法的区别,都说出了它本质的区别(不看代码,只看这个结论,就已经足够了,如果觉得有必要从代码中得出这个结论,那就继续往下看),这 ...

  10. StackOverFlow的2016统计

    http://stackoverflow.com/research/developer-survey-2016