博客列表 >tp5.1验证

tp5.1验证

意外的博客
意外的博客原创
2019年07月15日 22:36:552656浏览

1.独立验证:也就是小范围进行数据验证,不用另外写一个验证类引入;

//首先在当前控制器下引入框架的验证类;

use think\Validate;

//在需要验证的方法中写入一下代码;
//验证规则
$rule = [
    'name'  => 'unique:table(表名必须有)|require|max:25',
    'age'   => 'number|between:1,120',
    'email' => 'email',];
 //验证错误信息;
$msg = [
    'name.require' => '名字不能为空',
    'name.unique' => '名字不能重复'
    'name.max'     => '不能超过25个字符',
    'age.number'   => '年龄必须是数字',
    'age.between'  => '年龄在1到120之间',
    'email'        => '邮箱格式不正确',
    ];
//需要验证的数据;
$data = [
    'name'  => '张三',
    'age'   => 122,
    'email' => 'zhangsan@qq.com',
    ];
$validate = Validate::make($rule)->message($msg);
$result = $validate->check($data);
if(!$result){
 echo $validate->getError();
 //ajax返回;
 // return $info = ['code'=>0,'msg'=>$validate->getError()];
 }

2.验证器验证

首先在和控制器平级层创建一个文件夹为validate,里面有文件,文件名对应当前的控制器名,如在admin控制器需要验证,文件名就为admin.php

namespace app\index\validate;
use think\Validate;
class Admin extends Validate
{
    //验证规则
    protected $rule =   [
        'name'  => 'require|max:25',
        'age'   => 'number|between:1,120',
        'email' => 'email',    
    ];
    //返回错误信息
    protected $message  =   [
        'name.require' => '名称必须',
        'name.max'     => '名称最多不能超过25个字符',
        'age.number'   => '年龄必须是数字',
        'age.between'  => '年龄只能在1-120之间',
        'email'        => '邮箱格式错误',    
    ];
    
}

在控制器中调用;下面会引入上面2的验证类;

namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
    public function index()
    {
    //需要验证的数据;一般为前端返回的数据;
        $data = [
            'name'  => 'thinkphp',
            'email' => 'thinkphp@qq.com',
        ];
        //注意app前面有一个反斜杠;
        $validate = new \app\index\validate\Admin;
          // $res = $validate->check($data);
        if (!$validate->check($data)) {
            dump($validate->getError());
            
        }
    }
}

3.验证场景

就是在验证类中增加一个规则
 protected $scene = [
        'edit'  =>  ['name','age'],
        'add' => ['name'],
    ];
    
    //控制器中
    //在验证场景,表示在编辑的时候,只会验证name字段;
    if (!$validate->scene('edit')->check($data)) {
            dump($validate->getError());
            
        }


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议