이 글은 주로 ThinkPhp 프레임워크 양식 검증 및 Ajax 검증 문제를 소개합니다. 이제는 필요한 친구들이 참고할 수 있도록 공유합니다.
TP 데이터를 검증하는 방법에는 두 가지가 있습니다. 정적 방법이고 하나는 동적 방법입니다. 아래에서는 ThinkPhp 프레임워크 양식 확인 및 Ajax 확인 문제를 소개합니다. 관심 있는 친구는 이전 양식 확인이 모두 js로 작성되었음을 확인해야 합니다. . 프레임워크 검증. 하지만 둘을 비교하면 js 검증이 더 좋습니다. tp 프레임워크 검증은 백그라운드 코드를 실행하므로 실행 속도와 효율성이 떨어지기 때문입니다.
자동 검증은 ThinkPHP 모델 계층에서 제공하는 데이터 검증 방법으로, create를 사용하여 데이터 개체를 생성할 때 자동으로 데이터 검증을 수행할 수 있습니다. 인증코드는 모델 레이어, 즉 모델에 작성되어야 합니다.
데이터 검증에는 두 가지 방법이 있습니다.
정적 방법:모델 클래스의 $_validate 속성을 통해 검증 규칙을 정의합니다. 정적 메서드를 정의한 후에는 다른 곳에서 사용할 수 있습니다.
동적 방법:모델 클래스의 유효성 검사 방법을 사용하여 자동 유효성 검사 규칙을 동적으로 생성합니다. 동적 방법은 더 유연하며 어디에서나 사용할 수 있으며 다른 곳에서는 사용할 수 없습니다. 어떤 방법을 사용하든 검증 규칙의 정의는 통일된 규칙이며 정의 형식은
<?php namespace Home\Controller; use Think\Controller; class TestController extends Controller { public function add() { if(empty($_POST)) { $this->show(); } else { $y=new \Home\Model\YongHuuModel(); $r=$y->create(); if($r) { $y->add(); } else{ die($y->getError()); } } } }
2입니다. thinkphpApplicationHomeViewTest
<!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> </head> <style type="text/css"> *{ font-family:微软雅黑; padding:0px; margin:0px auto} </style> <body> <form action="__ACTION__" method="post"> <p>用户名:<input type="text" name="uid" /></p> <p>密码:<input type="text" name="pwd" /></p> <p>确认密码:<input type="text" name="pwd1" /></p> <p>姓名:<input type="text" name="name" /></p> <p>邮箱:<input type="text" name="email" /></p> <p>年龄:<input type="text" name="age" /></p> <p><input type="submit" value="提交" /></p> </form> </p> </body> </html>
3에 해당 html 파일을 작성합니다. 검증방법인 thinkphpApplicationHomeModel Model 파일에 작성합니다.
<?php namespace Home\Model; use Think\Model; class YongHuuModel extends Model { protected $tablePrefix = ""; protected $trueTableName = 'yonghuu'; //真实表名 //protected $patchValidate = true; protected $_validate = array( array('uid','require','用户名不能为空!'), array('pwd','pwd1','两次输入的密码不一致!',0,'confirm'), //两个字段是否相同 array('email','email','邮箱格式不正确'), array('name','/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/','身份证号不正确!',0,'regex'), array('age','18,50','年龄不在范围内',0,'between'), ); }
1. ApplicationHomeController<?php
namespace Home\Controller;
use Think\Controller;
class TestController extends Controller
{
public function add()
{
if(empty($_POST))//如果post数组为空
{
$this->show();//显示add.html页面
}
else//如果post数组不为空
{
$y = D("YongHu");
$arr = array(//动态验证就是需要在哪验证就在哪里写验证方法。
array("uid","require","用户名不能为空",0),//讲验证的方法写在方法里面
);
if($y->validate($arr)->create())//这里要先调用validate方法,然后将写的验证方法放到validate里面
{
$y->add();
}
else
{
die($y->getError());
}
}
}
}
에 해당 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> <style type="text/css"> </style> </head> <body> <form action="__ACTION__" method="post"> <p>用户名:<input type="text" name="uid" /></p> <p>密码:<input type="text" name="pwd" /></p> <p>确认密码:<input type="text" name="pwd1" /></p> <p>姓名:<input type="text" name="name" /></p> <p>邮箱:<input type="text" name="email" /></p> <p>年龄:<input type="text" name="age" /></p> <p><input type="submit" value="提交" /></p> </form> </body> <script type="text/javascript"> </script> </html>3.쓰기 thinkphpApplicationHomeModel의 모델 파일.
<?php namespace Home\Model; use Think\Model; class YongHuModel extends Model { protected $tablePrefix = "";//表示表格前缀为空,就是没有前缀。 protected $trueTableName = "yonghu";//如果不写这句话,会自动去找Yong_Hu这张表,这是默认的表格的命名。这里要写上实际的表格的名字。 }3. Ajax 검증 Tp 동적 검증과 정적 검증에는 큰 단점이 있습니다. 즉, 오류 메시지가 표시되면 다른 페이지로 이동하여 오류 정보를 표시합니다. 현재 페이지에 오류 메시지를 표시하려면 ajax를 사용하여 확인해야 합니다.
1. 디스플레이 및 Ajax 처리 방법 작성
<?php namespace Home\Controller; use Think\Controller; class TestController extends Controller { public function tianjia()//添加方法,用来显示页面 { $this->show(); } public function test()//ajax处理方法 { $y = D("YongHu"); $arr = array(//动态验证就是需要在哪验证就在哪里写验证方法。 array("uid","require","用户名不能为空"),//讲验证的方法写在方法里面 ); if($y->validate($arr)->create())//这里要先调用validate方法,然后将写的验证方法放到validate里面 { $this->ajaxReturn("通过验证","eval"); } else { $this->ajaxReturn($y->getError(),"eval"); } } }2. 디스플레이 페이지 작성
<!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" /> <script src="__PUBLIC__/js/jquery-1.11.2.min.js"></script> <title>无标题文档</title> <style type="text/css"> </style> </head> <body> <p>用户名:<input id="uid" type="text" name="uid" /></p> <p><input id="btn" type="button" value="验证" /></p> </body> <script type="text/javascript"> $("#btn").click(function(){ var uid = $("#uid").val(); $.ajax({ url:"__CONTROLLER__/test", data:{uid:uid}, type:"POST", dataType:"TEXT", success: function(data){ alert(data); } }) }) </script> </html>이상이 모든 분들의 학습에 도움이 되기를 바랍니다. . 더 많은 관련 내용을 원하시면 문의해주세요. PHP 중국어 웹사이트를 팔로우하세요! 관련 권장 사항:
ThinkPHP3.2 프레임워크는 addAll() 메서드를 사용하여 일괄적으로 데이터를 삽입합니다
thinkPHP5 ajax 제출 양식 작업thinkphp와 redis 및 queue를 결합하여 구현된 코드위 내용은 ThinkPhp 프레임워크 양식 검증 및 Ajax 검증 문제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!