model中的自动验证 $_validate $_auto

普通模式:

 1 <?php
 2     class UserModel extends RelationModel{
 3
 4
 5         /**自动验证**/
 6         protected $_validate  =  array(
 7             /**array([验证字段],[验证规则],[错误提示],(验证条件(默认为存在字段就验证)),(附加规则),(验证时间))**/
 8             array(‘username‘,‘‘,‘该用户名已经存在!‘,1,‘unique‘),
 9                array(‘password‘,‘5,12‘,‘密码过短,请重新输入!‘,1,‘length‘),// 自定义函数验证密码格式
10                array(‘repassword‘,‘password‘,‘两次密码不一致,请确认输入!‘,1,‘confirm‘),
11         );
12
13         /*这边附加规则中的‘callback‘ 与 ‘function‘ 必须分清楚,‘callback是用户自定义的函数‘,
14             ‘function‘是系统自带的函数
15         */
16         /**验证条件**/
17         /**
18          * Model::EXISTS_VALIDATE 或者0 存在字段就验证(默认)
19          * Model::MUST_VALIDATE 或者1 必须验证
20          * Model::VALUE_VALIDATE或者2 值不为空的时候验证
21          */
22         /**验证时间**/
23            /**
24             * Model::MODEL_INSERT或者1新增数据时候验证
25          * Model::MODEL_UPDATE或者2编辑数据时候验证
26          * Model::MODEL_BOTH或者3全部情况下验证(默认)
27          * 这里的验证时间需要注意,并非只有这三种情况,你可以根据业务需要增加其他的验证时间。
28             */
29
30         /**自动增加**/
31         protected $_auto = array (
32             /**array([增加字段],[增加函数],[增加条件],[附加规则])**/
33             array(‘addtime‘,‘time‘,3,‘function‘),
34         );
35
36         /**后台检查密码长度**/
37         protected function checkPwd($password){
38             if(strlen($password) < 5){
39                 return false;
40             }else{
41                 return true;
42             }
43         }
44
45     }
46
47 ?>

动态绑定模式:

 1 <?php
 2     class UserAction extends Action{
 3
 4         public function user(){
 5             $this->display();
 6         }
 7
 8         public function index(){
 9             $user = D(‘User‘);
10             $validate  =  array(
11                 /**array([验证字段],[验证规则],[错误提示],(验证条件(默认为存在字段就验证)),(附加规则),(验证时间))**/
12                 array(‘username‘,‘‘,‘该用户名已经存在!‘,1,‘unique‘),
13                    array(‘password‘,‘5,12‘,‘密码过短,请重新输入!‘,1,‘length‘),// 自定义函数验证密码格式
14                    array(‘repassword‘,‘password‘,‘两次密码不一致,请确认输入!‘,1,‘confirm‘),
15             );
16             $auto = array(
17                 array(‘addtime‘,‘time‘,3,‘function‘),
18             );
19             // model模型中的内置函数
20             // $user->setProperty(‘_validate‘,$validate);
21             // $user->setProperty(‘_auto‘,$auto);
22             $user->validate($validata)->auto($auto);
23             if($user->create()){
24                 if($user->add()){
25                     $this->success(‘注册成功‘);
26                 }else{
27                     $this->error(‘注册失败‘);
28                 }
29             }else{
30                 $this->error($user->getError());
31             }
32         }
33     }
34 ?>
时间: 2024-08-26 16:19:47

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

ThinkPHP中create()方法自动验证

自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 原理: create()方法收集表单($_POST)信息并返回,同时触发表单自动验证,过滤非法字段, 在控制器中使用create()方法,(返回值为true/false),会自动触发模型类中的$_validate属性(为父类Model中的方法,在子类Model中重写),在$_validate中自定义验证规则(验证规则下面会详细说明),当create()方法没有数据即返回值为fals

如何避免在EF自动生成的model中的DataAnnotation被覆盖掉

相信很多人刚接触EF+MVC的时候,会有这个疑问,就是当我们在model类中加验证信息的时候,会在重新生成model的时候被重写掉.这里介绍一个方法: 比如我有个Employee类是从数据库中生成到model中的,我们可以在Models文件夹中创建一个部分类名称与Employee类同名,然后在新建的部分类中加上我们需要验证信息,这时我们在view页面中引用Models.Employee做为页面model类.这样当我们重新生成model的时候,我们自己定义的部分类Employee就不会受影响了.

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

写一个继承与ValidationAttribute类的自定义的验证方法 MVC中传递数据时,大多数都会用Model承载数据,并且在传到控制器后,对Model进行一系列的验证. 我平时经常使用的判断方法比Low,因为Model都是不同的,也需要返回很多不同的信息,所以我都是把很多条件语句封装成私有方法,放在控制器的最下边,然后使用的时候直接调用. 下图就是我平时使用的代码格式,我把验证方法都写在了这里,很低级请轻喷. 其实在.Net MVC中,已经提供了很好的验证方法,就是在属性上面加Valida

Thinkphp表单自动验证

之前项目经常用到,没做总结. 自动验证是Thinphp模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 原理: create()方法收集表单($_POST)信息并返回,同时触发表单自动验证,过滤非法字段, 在控制器中使用create()方法,(返回值为true/false),会自动触发模型类中的$_validate属性(为父类Model中的方法,在子类Model中重写),在$_validate中自定义验证规则(验证规则下面会详细说明),当create()方

Qt的Model/View Framework解析(数据是从真正的“肉(raw)”里取得,Model提供肉,所以读写文件、操作数据库、网络通讯等一系列与数据打交道的工作就在model中做了)

最近在看Qt的Model/View Framework,在网上搜了搜,好像中文的除了几篇翻译没有什么有价值的文章.E文的除了Qt的官方介绍,其它文章也很少.看到一个老外在blog中写道Model/View是他认为Qt中最不好的一部分了.真的是这样吗?为了回馈开源社区,我写了这篇blog,写的是我认为比较有价值的东东.题目起得是解析,但也没有特别细节的介绍,点到为止,有兴趣的Tx可以继续讨论.我所看的资料有<C++ GUI Programming with Qt 4, Second Edition

Django model 中的字段解释

Django 通过 models 实现数据库的创建.修改.删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField:一个自动递增的整型字段,添加记录时它会自动增长.你通常不需要直接使用这个字段:如果你不指定主键的话,系统会自动添加一个主键字段到你的model.(参阅自动主键字段) BooleanField:布尔字段,管理工具里会自动将其描述为checkbox. CharField:字符串字段,单行输入,用于较短的字符串,如要保存大量文本, 使用 TextField,Ch

Hibernate中的自动建表及11选5平台开发

Hibernate支持自动建表.11选5平台开发(企 娥:217 1793 408)开发阶段,可通过在hibernate.cfg.xml中添加常量值来设置自动建表. 以mysql为例,只需要在配置文件中添加如下语句即可. <property name="hbm2ddl.auto"> 参数 </property> hibernate框架为参数提供了四个可选项(update.create.create-drop.validate),我们根据需求选择. 四个参数意义:

models.Model中常用的数据字段格式说明

在models.Model中常用的数据字段格式说明 字段格式 可以使用的参数 说明 BigIntegerField 64位的大整数 BooleanField 布尔值,只有True和False两种 CharField max_length,min_length; 指定的接受字符串长度 DateField auto_now :每次存储时就自动加入当前日期auto_now_add: 只有在对象被创建时才加入当前日期(创建日期) 日期格式,可用于datetime.date DateTimeField 同

EL表达式无法显示Model中的数据

EL表达式无法显示Model中的数据 最近在学习SpringMVC,所有的配置都已经完成,但是在测试的时候EL表达式一直无法显示,例如存储在Model中${message},在jsp页面既然原样输出${message},EL表达式好像就无效, 那么问题来了,什么原因导致的不显示了,反复检查代码和配置,依然没有发现错误,代码如下: 首先是Spring Controller import org.springframework.web.servlet.ModelAndView;import org.