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学习 函数 课件
Jun 15 PHP
php smarty模版引擎中的缓存应用
Dec 02 PHP
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
Jun 04 PHP
使用PHP curl模拟浏览器抓取网站信息
Oct 28 PHP
php-fpm配置详解
Feb 12 PHP
CI框架中集成CKEditor编辑器的教程
Jun 09 PHP
PHP使用GIFEncoder类处理gif图片实例
Jul 01 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
Nov 06 PHP
PHP速成大法
Jan 30 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
May 11 PHP
网页的分页下标生成代码(PHP后端方法)
Feb 03 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
Oct 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
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
php+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
php中strtotime函数用法详解
2014/11/15 PHP
PHP浮点比较大小的方法
2016/02/14 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
PHP记录和读取JSON格式日志文件
2016/07/07 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
JQuery 网站换肤功能实现代码
2009/11/02 Javascript
javascript 动态修改样式和层叠样式表代码
2010/04/27 Javascript
javascript面向对象快速入门实例
2015/01/13 Javascript
javascript对象的创建和访问
2016/03/08 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
详解nodejs express下使用redis管理session
2017/04/24 NodeJs
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
Python实现带百分比的进度条
2016/06/28 Python
从头学Python之编写可执行的.py文件
2017/11/28 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
python中pivot()函数基础知识点
2021/01/03 Python
html5应用缓存_动力节点Java学院整理
2017/07/13 HTML / CSS
GLAMGLOW香港官网:明星出镜前的秘密武器
2017/03/16 全球购物
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
医院护士见习期自我鉴定
2014/09/15 职场文书
2015年市场营销工作总结
2015/07/23 职场文书