ThinkPHP中的三大自动简介


Posted in PHP onAugust 22, 2014

本文较为详细的讲述了ThinkPHP中的三大自动,是非常重要的应用,分享给大家供大家参考。具体如下:

一、自动验证

格式如下:

array('验证字段','验证规则','错误提示','验证条件','附加规则','验证时间')

参数说明:

验证字段:需要验证表单字段名称
验证规则:必须要结合附加规则一起使用
错误提示:如果出现错误,抛出一个什么样的错误提示告知用户
验证条件:0、1、2
附加规则:1、regex使用正则验证 2、function使用函数验证 3、callback回调 4、confirm验证表单当中两个字段是否相同 5、验证是否等于某个值 6、in是否在某一个范围内 7、验证是否唯一
TP封装:require 字段必须验证;eamil 验证邮箱;url 验证url地址;currency 货币;number 数字;
验证时间:指数据库操作时间的验证时机,新增数据时验证Model::MODEL_INSERT;编辑的时候验证Model::MODEL_UPDATE;全部情况下验证Model::MODEL_BOTH;

aoli/Home/Tpl/default/User/reg.html页面如下:

<form action="__URL__/regadd" method="post">
 用户名:<input type="text" name="username" /><br />
 密码:<input type="password" name="password" /><br />
 重复密码:<input type="password" name="repassword" /><br />
 注册时间:<input type="text" name="createtime" /><br />
 注册IP:<input type="text" name="createip" /><br />
 <input type="submit" value="注册" />
</form>

aoli/Home/Lib/Model/UserModel.class.php页面如下:

<?php
class UserModel extends Model{//对应数据库中的表user
  protected $_validate=array(
     array('username','require','用户名必填'),
     array('username','checklen','用户名长度过长或过短',0,'callback'),
     array('password','require','密码必填'),
     array('repassword','require','重复密码必填'),
     array('password','repassword','两次密码不一致',0,'confirm'),
     array('createtime','number','您输入的不是数字'),
     array('createip','email','邮箱格式不正确'),
  ); 
  function checklen($data){
    if(strlen($data)>15 || strlen($data)<5){
      return false;
    }else{
      return true;
    }
  }
     
 }
?>

aoli/Home/Lib/Action/UserAction.class.php页面如下:

<?php
 class UserAction extends Action {
 function reg(){
   $this->display();
 }
 function regadd(){
   $user=D('user');
   if($user->create()){
     if($user->add()){
       $this->success('注册成功');
     }else{
       $this->error('注册失败');
     }
   }else{
     $this->error($user->getError());
   } 
 } 
}
?>

二、自动完成(自动填充)

自动完成也是ThinkPHP当中的一个成员方法,在create的时候,自动执行

规则如下:

array('填充字段','填充内容','填充条件','附加规则');

简单示例如下:

protected $_auto = array ( 
   //array( 'status','1'),  // 新增的时候把 status 字段设置为 1
   array('password','md5',1,'function') , // 对 password 字段在新增的时候使 md5 函数处理
   array('createtime','time',3,'function' ), // 对 create_time 字段在更新的时候写入当前时间戳
);

二、自动映射(字段映射)

自动映射:将数据库的字段映射成别名,在表单中就可以使用别名了

简单示例如下:

protected $_map = array(  
  'name' => 'username',
  'pass' => 'password',
);

详细本文所述技巧对于大家学习及使用ThinkPHP有一定的帮助作用。

PHP 相关文章推荐
PHP 抓取网页图片并且另存为的实现代码
Mar 24 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
Jun 23 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
Dec 17 PHP
支付宝接口开发集成支付环境小结
Mar 17 PHP
PHP SESSION的增加、删除、修改、查看操作
Mar 20 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
Jul 12 PHP
PHP flush 函数使用注意事项
Aug 26 PHP
php 解析xml 的四种方法详细介绍
Oct 26 PHP
2017年最好用的9个php开发工具推荐(超好用)
Oct 23 PHP
php实现微信公众号企业转账功能
Oct 01 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
Oct 24 PHP
Laravel如何实现适合Api的异常处理响应格式
Jun 14 PHP
PHP实现克鲁斯卡尔算法实例解析
Aug 22 #PHP
php中限制ip段访问、禁止ip提交表单的代码分享
Aug 22 #PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 #PHP
PHP中new static()与new self()的区别异同分析
Aug 22 #PHP
PHP中的替代语法简介
Aug 22 #PHP
destoon供应信息title调用出公司名称的方法
Aug 22 #PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
Aug 22 #PHP
You might like
PHP mb_convert_encoding文字编码的转换函数介绍
2011/11/10 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
基于jQuery实现Accordion手风琴自定义插件
2020/10/13 Javascript
js实现消息滚动效果
2017/01/18 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
关于axios不能使用Vue.use()浅析
2018/01/12 Javascript
详解vuex的简单使用
2018/03/12 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
JavaScript常用内置对象用法分析
2019/07/09 Javascript
vue实现行列转换的一种方法
2019/08/06 Javascript
layui 弹出层值回传解决方式
2019/11/14 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
python主线程捕获子线程的方法
2018/06/17 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
Python configparser模块操作代码实例
2020/06/08 Python
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
社区优秀志愿者材料
2014/02/02 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
刘胡兰观后感
2015/06/16 职场文书
css3带你实现3D转换效果
2022/02/24 HTML / CSS
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android
基于Python编写一个监控CPU的应用系统
2022/06/25 Python