自動驗證是ThinkPHP模型層提供的資料驗證方法,可以在使用create建立資料物件的時候自動進行資料驗證。分為靜態驗證和動態驗證。本文主要和大家介紹ThinkPHP框架表單驗證操作方法,需要的朋友可以參考下,希望能幫助大家。
一、靜態驗證
(1)在Home/Controller/路徑下新建Index控制器。 IndexController
IndexController.class.php頁面
注意:靜態定義方式因為必須定義模型類,所以只能用D函數實例化模型
create方法是對表單提交的POST資料進行自動驗證
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function yanzheng(){ $u= D("users");//造一个子类对象 if(empty($_POST)){ $this->show(); }else{ if($u->create()){//验证 echo"验证通过"; }else{ echo $u->getError();//获取错误信息 } } } }
(2)在view/Index資料夾下做yanzheng.html頁面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script src="__ROOT__/Public/js/jquery-3.2.0.min.js"></script> </head> <body> <h1>验证界面</h1> <form action="__ACTION__" method="post"> <p>用户名:<input type="text" name="uid" /></p> <p>密码:<input type="password" name="pwd1"/></p> <p>确认密码:<input type="password" name="pwd2"/></p> <p>年龄:<input type="text" name="age"/></p> <p>邮箱:<input type="text" name="Email"/></p> <p><input type="submit" value="验证" /></p> </form> </body> </html>
效果圖:
(3)在Model層寫靜態驗證的驗證:(路徑如圖)
##UsersModel.class.php<?php namespace Home\Model; use Think\Model; class UsersModel extends Model{ //添加验证条件 protected $_validate = array( array("uid","require","用户名不能为空!"), //默认情况下用正则进行验证 array("pwd1","require","密码不能为空!"), array("pwd2","require","密码不能为空!"), array("pwd2","pwd1","两次输入的密码不一致",0,"confirm"), // 验证确认密码是否和密码一致 array("age","18,50","年龄不在范围内",0,"between"), array("Email","email","邮箱格式不正确"), ); }依序驗證效果圖:當全部為空時,點選驗證
##會跳到
輸入用戶名,其他不輸入時,會跳轉
兩次密碼輸入不一致時,會提示;年齡不在範圍內會提示;郵箱格式不正確時會提示;
輸入正確格式內容後
二、動態驗證
(1) IndexController.class.php頁面
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function yz(){ $u= M("users");//造一个父类对象 if(empty($_POST)){ $this->show(); }else{ $rules = array( array("uid","require","用户名不能为空!"), ); if($u->validate($rules)->create()){//验证 $this->ajaxReturn("ok","eval"); }else{ $this->ajaxReturn("no","eval"); } } } }
(2) yz.html頁面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script src="__ROOT__/Public/js/jquery-3.2.0.min.js"></script> </head> <body> <h1>验证界面</h1> <form action="__ACTION__" method="post"> <p><input type="text" name="uid" id="uid" /><span id="ts"></span></p> <p><input type="submit" value="验证" /></p> </form> </body> <script type="text/javascript"> $("#uid").blur(function(){ var uid = $(this).val(); $.ajax({ url:"__ACTION__", data:{uid:uid}, type:"POST", dataType:"TEXT", success: function(data){ if(data.trim()=="ok") { $("#ts").html("验证通过"); } else { $("#ts").html("用户名不能为空"); } } }); }) </script> </html>
看一下效果:
當文字方塊失去焦點時:
當文字方塊有內容時,再失去焦點:
相關推薦:
以上是ThinkPHP框架實作表單驗證功能碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!