tp 데이터를 확인하는 방법에는 두 가지가 있습니다. 하나는 정적이고 다른 하나는 동적입니다. 아래에서 편집자는 ThinkPhp 프레임워크 양식 확인 및 Ajax 확인 문제를 함께 살펴보세요.
이전 양식 확인 모두 js로 작성되었으며 tp 프레임워크의 검증도 여기에서 사용할 수 있습니다. 하지만 둘을 비교하면 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에 모델 파일을 저장합니다.
<?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());
}
}
}
}
<!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>
tp 동적 검증과 정적 검증은 큰 단점이 있습니다. 즉, 오류 메시지가 표시되면 다른 페이지로 이동하여 오류 메시지를 표시해야 합니다. 현재 페이지에 오류 메시지를 표시하려면 ajax를 사용하여 확인해야 합니다.
1. 디스플레이 작성 및 Ajax 처리 방법
<?php namespace Home\Model; use Think\Model; class YongHuModel extends Model { protected $tablePrefix = "";//表示表格前缀为空,就是没有前缀。 protected $trueTableName = "yonghu";//如果不写这句话,会自动去找Yong_Hu这张表,这是默认的表格的命名。这里要写上实际的表格的名字。 }
2. 디스플레이 페이지 작성
<?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"); } } }
위 내용은 TP 프레임워크의 양식 검증 및 Ajax 검증 문제에 대한 솔루션 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!