Heim  >  Artikel  >  Backend-Entwicklung  >  Informationen zur Lösung von Formularverifizierungs- und Ajax-Verifizierungsproblemen im TP-Framework

Informationen zur Lösung von Formularverifizierungs- und Ajax-Verifizierungsproblemen im TP-Framework

黄舟
黄舟Original
2017-07-20 10:47:391154Durchsuche

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());
}
}
} 
}
2 die entsprechende HTML-Datei in 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. Schreiben Sie die Modelldatei in thinkphpApplicationHomeModel, der Verifizierungsmethode.


<?php
namespace Home\Model;
use Think\Model;
class YongHuuModel extends Model
{
protected $tablePrefix = "";
protected $trueTableName = &#39;yonghuu&#39;; //真实表名
//protected $patchValidate = true;
protected $_validate = array(
array(&#39;uid&#39;,&#39;require&#39;,&#39;用户名不能为空!&#39;),
array(&#39;pwd&#39;,&#39;pwd1&#39;,&#39;两次输入的密码不一致!&#39;,0,&#39;confirm&#39;), //两个字段是否相同
array(&#39;email&#39;,&#39;email&#39;,&#39;邮箱格式不正确&#39;),
array(&#39;name&#39;,&#39;/^[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)$/&#39;,&#39;身份证号不正确!&#39;,0,&#39;regex&#39;),
array(&#39;age&#39;,&#39;18,50&#39;,&#39;年龄不在范围内&#39;,0,&#39;between&#39;),
);
}

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());
      }
    }
  }
}
2. Schreiben Sie die entsprechende HTML-Datei in 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>
<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. Schreiben Sie das Modell in thinkphpApplicationHomeModel.


<?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");
      }
  }
}
2. Anzeigeseite schreiben


<!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>

Zusammenfassung

Das obige ist der detaillierte Inhalt vonInformationen zur Lösung von Formularverifizierungs- und Ajax-Verifizierungsproblemen im TP-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn