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号

}

}

?>

时间: 2024-12-19 04:16:58

ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)的相关文章

thinkphp自动创建数据对象解析

thinkphp有一个自动创建数据对象的create方法,核心代码如下 public function create($data='',$type='') { // 如果没有传值默认取POST数据 if(empty($data)) { $data = I('post.'); }elseif(is_object($data)){ $data = get_object_vars($data); } // 判断是否有主键,有代表修改,没有代表插入 $type = $type?:(!empty($dat

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

Mybatis用了快两年了,在我手上的发展史大概是这样的 第一个阶段 利用Mybatis-Generator自动生成实体类.DAO接口和Mapping映射文件.那时候觉得这个特别好用,大概的过程是这样的 在数据库中先建好表配置好几个xml文件(一般都是复制粘贴上一个项目的),然后根据数据库中的表,生成实体类.DAO接口和Mapping映射文件当需要添加数据操作的时候,先在xml中写好CRUD语句,然后在DAO接口层写接口,最后到映射文件渐渐地,我忽然发现,这种方式越来越烦.改一个字段,要修改很多

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

=============JAVA后台代码===================== package com.qgc.service.autoSendMsg.AutoSendMsg import java.io.File;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import java.uti

thinkphp笔记-创建数据

这段代码看不懂.-<thinkphph3.2.3快速入门> <?phpnamespace Home\Controller;use Think\Controller;class FormController extends Controller{public function insert(){$Form = D('Form');if($Form->create()) {$result = $Form->add();if($result) {$this->success(

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

自动创建设备文件 1.自动创建设备文件的流程 字符设备驱动模块 -->创建一个设备驱动class--->创建属于class的device--->调用mdev工具(自动完成)--> 生成设备文件 mdev工具会根据/sys下的class找到相对应的device,然后根据device创建设备文件 class /sys/classdevice /sys/device 1.1创建class /注销class struct class * class_create(struct module

Hibernate/JPA 自动创建数据库(MySQL)

平时使用Hibernate/JPA映射MySQL时,经常使用到自动创建数据表操作,自动创建MySQL数据库比较少见. 实际上也可以同时创建数据库,修改一下连接配置即可. 常见的配置如下(以Spring Boot中配置方式为例): spring.datasource.url=jdbc:mysql://localhost:3306/dbname?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false

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

绝逼新手小白,so 请大神指点! 如果真的错的太多,错的太离谱,错的误导了其他小伙伴,还望大神请勿喷,大神请担待,大神请高抬贵嘴......谢谢. 好了,正题 刚接触ssh,今天在搞使用.hbm.xml文件 和 注解方式 来自动生成数据表 其中只是整了spring.hibernate,struts部分没有整.也就是说我只是测试了能够自动生成数据表(自动生成为"标准",自认为是对的......) 下面是配置和代码: 使用工具:myeclipse 2014 ,其中web project项目

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

1 :: 此脚本主要的作用创建1.自动创建快捷方式:2.自动更换快捷方式图标 2 @echo off 3 >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 4 if '%errorlevel%' NEQ '0' ( 5 goto UACPrompt 6 ) else ( goto gotAdmin ) 7 :UACPrompt 8 e

Kubernetes数据持久化之Storage Class(存储类)及自动创建PV

通过博文Kubernetes的存储之Volume可以了解到Kubernets实现数据持久化的流程为:搭建NFS底层存储-->创建PV-->创建PVC-->创建pod最终将pod中的container实现数据的持久化! 从上述流程中,看似没有什么问题,但是仔细研究就会发现:PVC在向PV申请存储空间时,是根据指定PV的名称.访问模式.容量大小来决定具体向哪个PV申请空间的. 打比方说:如果PV的容量是20G,定义的访问模式是WRO(只允许以读写的方式挂载到单个节点),而PVC申请的存储空间