宝哥软件园

ThinkPHP中的create()方法自动验证表单信息

编辑:宝哥软件园 来源:互联网 时间:2021-09-05

自动验证是ThinkPHP模型层提供的一种数据验证方法,使用create创建数据对象时可以自动验证数据。

原则:

create()方法收集表单($_POST)信息并返回,同时触发表单的自动验证并过滤非法字段。

在控制器中使用create()方法(返回值为true/false)将自动触发model类中的$_validate属性(这是父类Model中的一个方法,在子类Model中被重写),并自定义$_validate中的验证规则(验证规则将在下面详细描述)。当create()方法没有数据,即返回值为false时,它会传递$xxx对象-getError()。获取并返回错误消息!

自动身份验证的使用必须以以下规则格式定义:

protected $ _ validate=array(array(验证字段1、验证规则、错误提示、[验证条件、附加规则、验证时间]),array(验证字段2、验证规则、错误提示、[验证条件、附加规则、验证时间]),);其中,校验字段、校验规则、错误提示为必填项,校验条件、附加规则、校验时间为可选项!

验证字段(必填):表单字段。

身份验证规则(必需):必需字段必须是电子邮件地址、url URL地址、号码,也可以与其他规则结合使用。

错误提示(必需):身份验证失败时返回的提示信息。

验证条件(可选):有三种类型:0、1、2、0:字段验证存在于_ post,默认;1:一旦定义了验证规则,就必须对其进行验证;2:当值不为空时验证。

附加规则:

验证时间(可选):共1、2、3种,1:新增数据时进行验证;2:编辑数据时验证;3:验证所有情况(默认);您也可以根据业务需要增加其他验证时间

附上以下代码:以注册为例

前台页面比较简单,代码就不贴了。下面是前台注册界面的截图

控制器代码:

//注册公共函数register(){ $ user=new model user model();//两个逻辑:collect和show if(!Empty($_POST)) {//create()方法收集表单($_POST)信息并返回,同时触发表单自动验证,过滤非法字段$ date=$ user-create();//通过create()方法的返回值$date判断验证是否成功。if ($date) {//只在返回真实数据时添加。//interfaced()将数组改为字符串$ date[' user _ hobby ']=interfaced(',',$ date[' user _ hobby ']);$ info=$ user-add($ date);If ($info) {//跳转到第一页$ this-重定向(' Index/Index ');} }else{ //将错误信息分配给前台模板$ error=$ user-getError();$this-assign('error ',$ error);} }//调用视图视图$ this-display();}

模型类代码:

类UserModel扩展Model{ //是否批量处理验证,批量获取所有受$ patchValidate=true保护的错误验证信息;//默认值为false //自动验证定义受保护的$ _ validate=array (//array(字段、验证规则、错误提示、验证条件、附加规则、验证时间)//用户名验证不能为null Array(‘username’,‘require’,‘username’不能为null),Array(‘username’,“”,‘用户名已经被占用’,‘0’,‘唯一’),//密码验证,不能为null Array(‘password 2’),//验证并确认密码,密码必须填写并与密码数组(‘password 2’)一致数组(' password2 ',' password ','两个密码一致',0,' confirm '),//邮箱验证数组(' user_email ',' email ','邮箱格式不正确',2),//qq验证,数字合成,5-12位数组(' user_qq ',' number ',' qq必须是数字'),数组(' user_qq ',' 5,12 ','位数在5-12位之间',0,' length '),//学历验证,必须选择一个数组(' user ')介于'),//爱好验证,两个以上//因为爱好返回一个数组,附加规则中没有可以直接使用的规则,所以需要自定义方法,使用回调方法验证Array(‘user _ hobby’,‘check _ hobby’,‘爱好必须选择两个或两个以上的项目’,1,‘callback’)。//定义爱好验证的方法//参数$arg表示已验证的表单信息函数check_hobby($arg) {//如果(count($arg)2) {return false,则判断数组长度是否大于2;//将自动输出验证错误消息}返回true}}

在模板中显示验证的错误信息(部分代码)

TD style=' width :13%;text-align : right;'标签为=' user _ username' class='必选' username span */span/label/tdtd style=' width :87%;'input class=' input BG ' size=' 25 ' name=' username ' id=' User _ username ' type=' text ' value=' '/span style=' color : red;'{ $ error . username | default : ' ' }/span/TD result:

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

更多资讯
游戏推荐
更多+