ThinkPHP框架表单验证

ThinkPHP框架的表单验证分为静态验证和动态验证。

静态验证:

首先在Model文件下建立一个表的模型,验证哪个表就键哪个表的模型。如验证users表,则建立textModel.class.php的文件。

定义一个textModel类,继承父类Model

在类里面添加二维数组,数组里存放验证条件。条件格式为:

  1. array(
  2. array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),
  3. array(验证字段2,验证规则,错误提示,[验证条件,附加规则,验证时间]),
  4. ......
  5. );

具体的验证条件可以再php手册中查询。

namespace HomeModel;
use ThinkController;
class textModel extends Model
{
        array(
            array("users","require","用户名不能为空"),              //验证用户名是否为空
            array("age","","用户名已存在",1,"unique"),              //验证是否存在
            array("pwd","pwd1","两次输入密码不一致",1,"confirm"),    //验证两次输入是否相等。
            array("age","18,15","年龄必须在18到50之间",1,"between"), //验证在某个范围之内。
            array("email","email","邮箱格式输入不正确")              //验证格式是否正确

        ); 
}    
            

然后就可以在控制器中验证并调取错误信息

 1 namespace HomeController;
 2 use ThinkController;
 3 class ZhuCeController extends Controller
 4 {
 5     function ZhuCe()
 6     {    
 7         if(empty($_POST))
 8         {
 9             $this->display();
10         }
11         else
12         {
13             $model = new HomeModel	estModel(); //创建模型
14             if(!$model->create())  //判断是否成功创建表单
15             {
16                  //失败的输出错误信息
17                  $e = $model->getError();
18                 $this->error($e);
19             }
20             else
21             {
22                 $model->add();
23             }
24         }    
25     }
26 }

动态验证:

动态验证直接在控制器里创建一个二维数组,将验证条件放在里面,然后用model调用里面的validate方法,将条件作为一个参数放在里面进行验证。

namespace HomeController;
use ThinkController;
class ZhuCeController extends Controller
{
    function ZhuCe()
    {
        
        if(empty($_POST))
        {
            $this->display();
        }
        else
        {
            $model = new HomeModel	estModel();
            $rules = array(
                array('uid','require','用户名不能为空'),
            )
            if(!$model->validate($rules)->create())
            {
                echo $model->getError();
            }
        }
        
    }
}
原文地址:https://www.cnblogs.com/zk0533/p/5661618.html