Es gibt zwei Methoden zur TP-Datenüberprüfung, eine ist die statische Methode und die andere ist die dynamische Methode. Nachfolgend stellt Ihnen der Editor die Fragen zur ThinkPhp-Framework-Formularüberprüfung und zur Ajax-Überprüfung vor
Die vorherige Formularüberprüfung wurde in js geschrieben, und die Überprüfung des TP-Frameworks kann hier auch verwendet werden. Im Vergleich der beiden ist die JS-Verifizierung jedoch besser, da bei der TP-Framework-Verifizierung Hintergrundcode ausgeführt wird, sodass die Ausführungsgeschwindigkeit und -effizienz abnimmt. Die automatische Überprüfung ist eine von der ThinkPHP-Modellebene bereitgestellte Datenüberprüfungsmethode, die automatisch eine Datenüberprüfung durchführen kann, wenn zum Erstellen eines Datenobjekts Create verwendet wird. Der Verifizierungscode muss in die Modellebene, also das Modell, geschrieben werden.Es gibt zwei Möglichkeiten, Daten zu überprüfen:
Statische Methode: Definieren Sie die Überprüfung über das Attribut $_validate im Modellklassenregel. Nachdem die statische Methode definiert wurde, kann sie an anderer Stelle verwendet werden.
Dynamische Methode: Verwenden Sie die Validate-Methode der Modellklasse, um automatische Validierungsregeln dynamisch zu erstellen. Die dynamische Methode ist flexibler. Sie kann überall dort geschrieben werden, wo sie verwendet wird, und kann nicht anderswo verwendet werden.
Unabhängig von der verwendeten Methode ist die Definition der Verifizierungsregeln eine einheitliche Regel und das Definitionsformat lautet:<?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'), ); }
2. Dynamische Überprüfung
1. Schreiben Sie Methoden in 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>
<?php namespace Home\Model; use Think\Model; class YongHuModel extends Model { protected $tablePrefix = "";//表示表格前缀为空,就是没有前缀。 protected $trueTableName = "yonghu";//如果不写这句话,会自动去找Yong_Hu这张表,这是默认的表格的命名。这里要写上实际的表格的名字。 }
3. Ajax-Verifizierung
Es gibt eine für die dynamische TP-Verifizierung und die statische Verifizierung Der große Nachteil besteht darin, dass beim Auftreten einer Fehlermeldung zu anderen Seiten gesprungen werden muss, um die Fehlermeldung anzuzeigen. Wenn Sie auf der aktuellen Seite eine Fehlermeldung anzeigen müssen, müssen Sie zur Überprüfung Ajax verwenden. 1. Anzeige- und Ajax-Verarbeitungsmethoden<?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"); } } }
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Formularvalidierung und Ajax-Validierung im ThinkPhp-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!