ThinkPHP三大自动

①自动验证

在控制器对应的模型里边 设置validate属性

规则:

array(

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

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

......

);

字段应该跟name 以及数据库对应

protected $_validate = array(
        array(‘username‘, ‘/^[a-z]+[A-z]*\d+[a-zA-Z0-9]*/‘, ‘用户名不能为空‘), //用户名验证
        array(‘password‘, ‘require‘, ‘密码不能为空‘),
        array(‘password2‘, ‘password‘, ‘两次密码输入不相同‘, 0, ‘confirm‘),
        array(‘user_email‘, ‘email‘, ‘邮箱格式有误‘),
        array(‘user_qq‘, ‘/^[1-9]\d{4,11}$/‘, ‘QQ号有误‘),
        array(‘user_tel‘, ‘/^1[3,5,8]\d{9}$/‘, ‘手机号不正确,或者位数不正确‘),
        array(‘user_sex‘, array(1, 2, 3), ‘性别是必选项‘, 0, ‘in‘),
        array(‘user_xueli‘, array(2, 3, 4, 5), ‘请选择学历‘, 0, ‘in‘),
        array(‘user_hobby‘, ‘checkbobby‘, ‘至少选择两个爱好‘, 1, ‘callback‘),
        array(‘user_introduce‘, ‘checkIntroduceslenth‘, ‘必须大于12个字‘, 1, ‘callback‘)
    );
//具体的验证规则可以参考手册说明

②自动完成(填充)

在插入数据之前,或许我们需要对数据进行处理,在不增加程序逻辑的前提下可以使用TP框架的自动完成功能

自动完成于自动验证比较类似,

  1. array(填充字段,填充内容,[填充条件,附加规则])

如下

 //自动完成
    protected $_auto = array ( 
        array(‘password‘,‘md5‘,3,‘function‘) ,
        array(‘password2‘,‘md5‘,3,‘function‘) ,// 对password字段在新增和编辑的时候使md5函数处理
        array(‘user_introduce‘,‘setName‘,3,‘callback‘),//callback 表示填充内容setName是当前模型的
        一个方法
        array(‘register_time‘,‘time‘,3,‘function‘)

③自动映射

通常情况下 模板中的name属性的值表示了数据库表中的某个字段,倘若name的值跟数据库中的表字段无法对应上,在CRUD的时候可能会出现找不到字段的相关错误提示,如果插入的时候,那么该字段的值会被替换为空值 插入到数据库中.

自动映射能够解决name属性值与数据库中表字段不同的而出现的相关的问题.

使用规则如下:

 protected $_map = array(
        ‘name‘ =>‘username‘, // 把表单中name映射到数据表的username字段
        ‘mail‘  =>‘email‘, // 把表单中的mail映射到数据表的email字段
    );

ThinkPHP三大自动

时间: 2024-10-24 23:18:33

ThinkPHP三大自动的相关文章

thinkPHP中的三大自动

class UserModel extends Model{ protected  $_validate=array( //下面还需要再写数组.一个数组就是一条验证规则 //array('验证字段','验证规则','错误提示','验证条件','附加规则','验证时间'), //验证字段:需要验证的表单字段名称,也可以表单当中的一些辅助字段,例如验证码,附加码,重复密码等 //验证规则,验证规则必须要结合附加规则一起使用 //错误提示:如果出现错误,抛出一个什么样的错误提示告知用户 //验证条件:

ThinkPHP教程_PHP框架之ThinkPHP(十)【三大自动】

一.概述 ThinkPHP的官方叫法是自动验证.自动完成和字段映射,由于这三项功能都是使用create()方法时自动实现的,所以个人称之为三大自动,即自动验证.自动完成(自动填充)和自动映射 二.自动验证 类型检查只是针对数据库级别的验证,所以系统还内置了数据对象的自动验证功能来完成模型的业务规则验证,而大多数情况下面,数据对象是由表单提交的$_POST数据创建.需要使用系统的自动验证功能,只需要在Model类里面定义$_validate属性,是由多个验证因子组成的数组,一个验证因子就是一个一维

thinkphp的自动完成功能说明

手册里有一句话很关键: 自动完成是ThinkPHP提供用来完成数据自动处理和过滤的方法,使用create方法创建数据对象的时候会自动完成数据处理. 这句话说明自动完成发生的时间是create()组建数据的时候,而不是add和save的时候. 相对应的Model里面$_auto 里的完成时间(如下)表示的也是create()组建数据的时候,create()第二个参数即是表示的这个完成时间.当create()不加参数的时候默认时间为1,即新增数据时:当第二个参数为2时即表示为更新数据时,不需要第一个

javascript 将 ThinkPHP 分页自动转换为 bootstrap 分页

#写的一个通用的,将thinkphp生成的分页HTML,自动转换为 bootstrap 分页: /** * @author default7#zbphp.com * @description 将ThinkPHP的分页转换为 bootstrap分页 * @param selector */ function initPagination(selector) { selector = selector || '.page'; $(selector).each(function (i, o) { va

ThinkPHP做自动登陆及异位或加密COOKIE!

异位或加密方法: /* *登陆如果自动登陆加密 *默认是0解密状态,1是加密 *采用的方法是异位或加密 */ function encrytion($value,$type=0){ $key = md5(C('AUTO_LOGIN_KEY')); //加密 if($type){ // 64位加密 //return base64_encode($value ^ $key); // 加密后可能会有等号 return str_replace('=','',base64_encode($value ^

ThinkPHP3.2.3中三大自动中的缺陷问题

我们在使用Thinkphp3.2.3框架时在对数据表进行模型化后就可以使用自动完成功能. 自动完成可以帮助我们更简便的完成对表单内容对数据表(集合)的填充,自动完成是基于: 当实例化数据库user后,会自动的将表单的信息安装数据表的对应属性值字段填充进去, 如果有多余的字段的话将会自动过滤.正常的使用MySQL数据库的话就不会存在问题. 但是使用NoSQL数据库就会存在缺陷了,如MongoDB数据库本身就是依靠文档存储数据 的没有固定的表结构.在使用自动完成时就会将表单的所有字段都填充进去,这样

thinkphp上传图片自动压缩问题

thinkphp上传图片后由于图片较大需要剪切,但是由于大部分浏览器阻挡剪切弹出窗口造成无法剪切 故使用thinkphp的生成缩略图的功能,上传的同时直接生成缩略图并覆盖原图,这样就可以自定义上传图片的大小(备注,生成缩略图是按原比例缩放的) 代码如下 public function upload($action){     $upload = new \Think\Upload(); $upload->maxSize = 2097172; $upload->exts = array('jpg

thinkphp自动验证

1.thinkphp的自动验证 自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 1.1应用范围: 进行数据类型.业务规则.安全判断等方面的验证. 1.2验证方式: 1.静态方式:在模型类里面通过$_validate属性定义验证规则. 2.动态方式:使用模型类的validate方法动态创建自动验证规则. 1.3验证规则: 例:一个简单的注册信息时的自动验证: <?php namespace Home\Model; use Thin

2)thinkphp的带有命名空间的自动加载机制

(1)为啥thinkphp里面的文件要是写你的命名空间,要与你的路径一样,因为在thinkphp实现自动加载机制的原理,就是靠的你的命名空间对应这个路径,然后自动加载机制通过这个路径找到你的类文件,然后进行实例化. (2)命名空间是虚拟的目录,并不是真实存在的目录 (3)其实我觉得  命名空间是可以不一样的,然后那个thinkphp将你的命名空间转化为相应的路径(但是thinkphp中,命名空间就是路径)