tp データ検証には 2 つの方法があり、1 つは静的メソッド、もう 1 つは動的メソッドです。以下に、エディターが ThinkPhp フレームワークのフォーム検証と Ajax 検証の問題を紹介しますので、興味のある方は一緒に見てください。検証はすべてjsで記述されており、tpフレームワークの検証もここで使用できます。ただし、この 2 つを比較すると、js 検証の方が優れています。tp フレームワーク検証ではバックグラウンド コードが実行されるため、実行速度と効率が低下します。
自動検証は、ThinkPHP モデル層によって提供されるデータ検証方法であり、create を使用してデータ オブジェクトを作成するときにデータ検証を自動的に実行できます。検証コードはモデル層、つまりモデルに記述する必要があります。
データ検証には 2 つの方法があります:
静的メソッド:モデル クラスの $_validate 属性を通じて検証ルールを定義します。静的メソッドを定義した後は、他の場所でも使用できます。
動的メソッド:モデルクラスの 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()); } } } }
<!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>
<?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>
3. Ajax 検証
1. 表示とAjax処理メソッドを書く
<?php namespace Home\Model; use Think\Model; class YongHuModel extends Model { protected $tablePrefix = "";//表示表格前缀为空,就是没有前缀。 protected $trueTableName = "yonghu";//如果不写这句话,会自动去找Yong_Hu这张表,这是默认的表格的命名。这里要写上实际的表格的名字。 }
<?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");
}
}
}
以上がThinkPhp フレームワークにおけるフォーム検証と Ajax 検証の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。