普通模式:

 <?php
class UserModel extends RelationModel{ /**自动验证**/
protected $_validate = array(
/**array([验证字段],[验证规则],[错误提示],(验证条件(默认为存在字段就验证)),(附加规则),(验证时间))**/
array('username','','该用户名已经存在!',1,'unique'),
array('password','5,12','密码过短,请重新输入!',1,'length'),// 自定义函数验证密码格式
array('repassword','password','两次密码不一致,请确认输入!',1,'confirm'),
); /*这边附加规则中的'callback' 与 'function' 必须分清楚,'callback是用户自定义的函数',
'function'是系统自带的函数
*/
/**验证条件**/
/**
* Model::EXISTS_VALIDATE 或者0 存在字段就验证(默认)
* Model::MUST_VALIDATE 或者1 必须验证
* Model::VALUE_VALIDATE或者2 值不为空的时候验证
*/
/**验证时间**/
/**
* Model::MODEL_INSERT或者1新增数据时候验证
* Model::MODEL_UPDATE或者2编辑数据时候验证
* Model::MODEL_BOTH或者3全部情况下验证(默认)
* 这里的验证时间需要注意,并非只有这三种情况,你可以根据业务需要增加其他的验证时间。
*/ /**自动增加**/
protected $_auto = array (
/**array([增加字段],[增加函数],[增加条件],[附加规则])**/
array('addtime','time',3,'function'),
); /**后台检查密码长度**/
protected function checkPwd($password){
if(strlen($password) < 5){
return false;
}else{
return true;
}
} } ?>

动态绑定模式:

 <?php
class UserAction extends Action{ public function user(){
$this->display();
} public function index(){
$user = D('User');
$validate = array(
/**array([验证字段],[验证规则],[错误提示],(验证条件(默认为存在字段就验证)),(附加规则),(验证时间))**/
array('username','','该用户名已经存在!',1,'unique'),
array('password','5,12','密码过短,请重新输入!',1,'length'),// 自定义函数验证密码格式
array('repassword','password','两次密码不一致,请确认输入!',1,'confirm'),
);
$auto = array(
array('addtime','time',3,'function'),
);
// model模型中的内置函数
// $user->setProperty('_validate',$validate);
// $user->setProperty('_auto',$auto);
$user->validate($validata)->auto($auto);
if($user->create()){
if($user->add()){
$this->success('注册成功');
}else{
$this->error('注册失败');
}
}else{
$this->error($user->getError());
}
}
}
?>

model中的自动验证 $_validate $_auto的更多相关文章

  1. tinkphp中的自动验证

    tinkphp是国内非常流行的一个开源框架,国内大小公司都在用的框架.对于初学的好多同学感觉不太好上手,其实并没没有大家想的那么复杂.自动验证功能是thinkphp提高的一种数据验证方法,分为动态和静 ...

  2. thinkphp中的自动验证

    array(验证字段,验证规则,错误提示,[验证条件,附加规则,验证时间]) 1.验证字段 需要验证的表单字段名称,这个字段不一定是数据库字段,也可以是表单的一些辅助字段,例如确认密码和验证码等等.有 ...

  3. model中字段格式验证

    注释部分在前端不显示 /// <summary> /// 链接地址 /// </summary> [Display(Name = "链接地址")] //[D ...

  4. 在Asp.Net MVC中实现RequiredIf标签对Model中的属性进行验证

    在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现RequiredIf标签对Model中的属性进行验证 具体场景为:某一属性是否允许为null的验证,要根据另 ...

  5. CompareValues标签对Model中的属性进行验证

    在Asp.Net MVC中实现CompareValues标签对Model中的属性进行验证   在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现Model两个 ...

  6. 在.Net MVC中自定义ValidationAttribute标签对Model中的属性做验证

    写一个继承与ValidationAttribute类的自定义的验证方法 MVC中传递数据时,大多数都会用Model承载数据,并且在传到控制器后,对Model进行一系列的验证. 我平时经常使用的判断方法 ...

  7. thinkPHP中服务器端的验证

    <?php class UserModel extends Model{ //user是表的名称 必须以表名开始,继承Model类 protected $_validate=array( //a ...

  8. tp5 model 中的查询范围(scope)

    查询范围scope在model中定义,在controller中使用 namespace app\index\model; use think\Model; class User extends Mod ...

  9. thinkphp自动验证---$_validate

    thinkphp中的自动验证 array(验证字段,验证规则,错误提示,[验证条件,附加规则,验证时间]) 1.验证字段 需要验证的表单字段名称,这个字段不一定是数据库字段,也可以是表单的一些辅助字段 ...

随机推荐

  1. .Net Core ----通过XUnit进行接口单元测试(带请求头及参数)并用output输出结果

    最近在做core的接口单元测试,所以在这拿出来分享一下,添加XUnit的nuget包 话不多说,直接上代码了: 输出结果(需要的命名空间using Xunit.Abstractions;): ITes ...

  2. PHP 必知的 16 个编程法则

    以双下划线(__)开头的方法称为魔术方法 -__construct():类的构造方法: -__destruct():类的析构方法: -__call($funName, $arguments):当访问未 ...

  3. 烽火R2600交换机配置脚本

    烽火交换机端口映射配置 ip nat inside source static udp iP 端口号 公网iP 端口号 ip nat inside source interface Vlan-intf ...

  4. Django学习笔记二

    Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ...

  5. sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError)

    在我学习flask建立网站时间碰到了一个棘手的问题,就是在我进行操作日志的更新时间,发现表格建立有点错误,导致表缺失,从而报了下面的错误 sqlalchemy.exc.ProgrammingError ...

  6. SSM框架主要几个注解的位置

    @Controller @Service @Repository @Component Controller (控制层) Service (业务层) daoImpl (实现层) 模糊注解 @Autow ...

  7. [CQOI2015]网络吞吐量

    Description: 给你一个图,每个点可以被经过\(a_i\)次,求有多少个人可以走最短路到n点 Hint: \(n \le 500\) Solution: 极其水的一道题,就当做复习最短路板子 ...

  8. 项目部署到tomcat

    准备工作 第一步 准备项目部署文件 准备项目中使用的数据库.sql文件. 准备项目程序(整个项目的war包文件) 第二步 安装运行环境 依次安装JDK.TOMCAT.MYSQL NAVICAT需要注意 ...

  9. Django中Q搜索的简单应用

    本节涉及: 1.Q搜索在前后端的设计 2.Django中Queryset对象的序列化(由后端扔给前端的数据必然会经过序列化) 3.前端动态地构造表格以便显示(动态创建DOM对象) 思路: 用户通过前端 ...

  10. 字典树-THE XOR largest pair

    题目:给你n个数字A1,A2....An ,问从中选出两个数字异或运算得到的最大结果是多少 0<=Ai<231 用字典树,记录每个数字的31位2进制01串(int 为4个字节,每个字节8个 ...