自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证。分为静态验证和动态验证。

关于基础知识,请查看手册“自动验证”一章。

一、静态验证

(1)在Ceshi/Controller/路径下新建Yanzheng控制器。

YanzhengController.class.php页面

注意:静态定义方式因为必须定义模型类,所以只能用D函数实例化模型

     create方法是对表单提交的POST数据进行自动验证

<?php
namespace Ceshi\Controller;
use Think\Controller;
class YanzhengController extends Controller
{ public function jtyz(){
$n= D("users"); if(empty($_POST)){ $this->show(); }else{
//验证要在model层写
if($n->create()){
echo "验证通过!";
}else{
echo $n->getError(); //获取错误信息
}
}
} public function _empty(){
echo "您访问的操作方法不存在!";
}
}

 (2)在view层做jtyz.html页面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action="__ACTION__" method="post">
<div> 用户名:<input type="text" name="uid"></div>
<div> 请输入密码:<input type="text" name="pwd1"></div>
<div> 请再次输入密码:<input type="text" name="pwd2"></div>
<div> 年龄:<input type="text" name="age"></div>
<div> 邮箱:<input type="text" name="email"></div>
<input type="submit" value="验证" />
</form>
</body>
</html>

  效果图:

(3)在model层写静态验证的验证:(路径如图)

UsersModel.class.php

<?php
namespace Ceshi\Model;
use Think\Model;
class UsersModel extends Model
{
protected $_validate = array(
//非空验证
array("uid","require","用户名不能为空"),
//相等验证
array("pwd1","require","密码不能为空"),
array("pwd2","pwd1","两次密码输入不一致","0","confirm"),
//范围验证
array("age","18,30","年龄不在范围内","0","between"),
//正则验证
array("email","email","邮箱格式不正确"),
);
}

  

依次验证效果图:

当全部为空时,点击验证

提示:

 当输入用户名后,点击验证:

显示:

两次密码输入不一致时,会提示;年龄不在范围内会提示;邮箱格式不正确时会提示;否则会提示验证通过。

二、动态验证

(1)  YanzhengController.class.php页面

<?php
namespace Ceshi\Controller;
use Think\Controller;
class YanzhengController extends Controller
{ //非空验证 静态
// public function jtyz(){
// $n= D("users");
//
// if(empty($_POST)){
//
// $this->show();
//
// }else{
// //验证要在model层写
// if($n->create()){
// echo "验证通过!";
// }else{
// echo $n->getError(); //获取错误信息
// }
// }
// }
//动态
public function dtyz(){ if(empty($_POST)){
$this->show();
}
else
{
//验证规则
$rules = array(
array('uid','require','用户名不能为空!'),
); $u= M("users"); if($u->validate($rules)->create()){
$this->ajaxReturn("OK","eval"); //如果成功
}else{
$this->ajaxReturn($u->getError(),"eval"); //如果不成功
} }
}
public function _empty(){
echo "您访问的操作方法不存在!";
}
}

  (2) dtyz.html页面:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!--引入js-->
<script src="__ROOT__/Public/js/jquery-1.11.2.min.js"></script>
</head>
<body>
<form action="__ACTION__" method="post">
<div> 用户名:<input type="text" name="uid" id="uid"><span id="ts"></span></div>
<input type="submit" value="验证" />
</form>
</body>
<script>
//文本框失去焦点时,显示提示信息
$("#uid").blur(function(){
var uid = $(this).val();
$.ajax({
url:"__ACTION__",
data:{uid:uid},
type:"POST",
dataType:"TEXT",
success:function(data){
alert(data);
if(data.trim()=="OK")
{
$("#ts").html("验证通过!");
}else{
$("#ts").html("用户名不能为空!");
}
}
});
})
</script>
</html>

  看一下效果:

当文本框失去焦点时:

当文本框有内容时,再失去焦点:

tp框架---表单验证的更多相关文章

  1. tp框架表单验证

    之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...

  2. tp框架表单验证 及ajax

    之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...

  3. tp框架表单提交注意!不要提交到当前方法

    tp框架  表单提交到当前方法,会重复执行显示部分和保存部分的代码.导致不知名的错误.

  4. ThinkPHP框架表单验证

    对注册到test表的表单进行验证 在注册之前要对表单进行验证: 用户名非空验证,两次输入密码必须一致即相等验证,年龄在18~50之间即范围验证,邮箱格式正则验证. 自动验证是ThinkPHP模型层提供 ...

  5. php--yii框架表单验证

    在视图层利用表单小部件生成表单时,field只能是数据库中存在的, 例如: use yii\helpers\Html; use yii\widgets\ActiveForm; use yii\capt ...

  6. ThinkPHP框架表单验证AJAX

    验证有两种方式:静态验证与动态验证. 一.静态验证 在模型类里面预先定义好该模型的自动验证规则,我们称为静态定义. 验证时要在test表的Model里面加验证条件:新建testModel.class. ...

  7. Yii 框架表单验证---实例

  8. laravel框架——表单验证

    创建路由 Route::get('test','VerController@index'); Route::post('tosubmit','VerController@tosubmit'); 在控制 ...

  9. php---tp框架---表单验证

    自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证.分为静态验证和动态验证. 关于基础知识,请查看手册"自动验证"一章 ...

随机推荐

  1. react基础篇六

    创建 Refs 使用 React.createRef() 创建 refs,通过 ref 属性来获得 React 元素.当构造组件时,refs 通常被赋值给实例的一个属性,这样你可以在组件中任意一处使用 ...

  2. POJ_2186_Popular Cows_强连通分量

    Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 30680   Accepted: 12445 De ...

  3. 切换原生appium里面H5页面

    #coding = utf-8from appium import webdriverimport time'''1.手机类型2.版本3.手机的唯一标识 deviceName4.app 包名appPa ...

  4. HAOI2010软件安装(树形背包)

    HAOI2010软件安装(树形背包) 题意 有n个物品,每个物品最多会依赖一个物品,但一个物品可以依赖于一个不独立(依赖于其它物品)的物品,且可能有多个物品依赖一个物品,并且依赖关系可能形成一个环.现 ...

  5. [tyvj1935 Poetize3]导弹防御塔 (二分图多重匹配)

    传送门 Description Freda控制着N座可以发射导弹的防御塔.每座塔都有足够数量的导弹,但是每座塔每次只能发射一枚.在发射导弹时,导弹需要T1秒才能从防御塔中射出,而在发射导弹后,发射这枚 ...

  6. cent OS官网上下载老版本系统镜像的正确打开方式

    当时的情况是这样的: 客户需要给服务器安装cent OS 7.3操作系统,我打开官网https://www.centos.org/,点击“GET CENTOS”——>“Minimal ISO”, ...

  7. Problem 48

    Problem 48 The series, 11 + 22 + 33 + ... + 1010 = 10405071317. Find the last ten digits of the seri ...

  8. web开发如何使用高德地图API(二)结合输入提示和POI搜索插件

    说两句: 以下内容除了我自己写的部分,其他部分在高德开放平台都有(可点击外链访问). 我所整理的内容以实际项目为基础希望更有针对性的,更精简. 点击直奔主题. 准备工作: 首先,注册开发者账号,成为高 ...

  9. Redis参数

    phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: Redis::__construct构造函数$redis ...

  10. SCVMM-VMWARE ACE虚拟机管理工具

    SCVMM是微软的虚拟化管理工具 VMWARE ACE是另一套虚拟化的工具 这两套工具都是用来管理虚拟机的,可以直接将物理机虚拟化为虚拟机 企业一旦发展到了一定阶段,并然需要自己的服务器和虚拟化环境, ...