Thinkphp_____学习笔记 数据验证及验证场景

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iheyu/article/details/80348294
Validate(验证器)
//==========执行Validate验证==========↓

D:\phpStudy\WWW\niwo\application\admin\controller\Admin.php
<?php
namespace app\admin\controller;
use think\Controller;
use think\Db; // 引入数据库操作模块
class Admin extends Controller
{
    public function lst() // 管理员列表页面
    {
        return $this->fetch();// 加载function对应的页面,也就是加载lst页面(管理员列表页面)
    }
    public function add() // 管理员添加页面
    {
        if(request()->isPost()){ // 返回结果->如果是Post
            //dump(input('post.')); // 打印Post信息
            // 我们接收post数据,是为了把管理员账号密码添加到数据库
            // 获取表单数据(获取用户输入的管理员账号和管理员密码)
            // 任何时候,都可以使用Validate类进行独立的验证操作(写在控制器里面的)
            $validate = new Validate([ // 实例化Validate(验证类)
                // 以数组的形式,写上你要验证的字段,并且写上你要验证的规则,
                'username'  => 'require|max:25', // 验证管理员名称 => 必填|字段不能大于25
                'password' => 'require|max:25' // 验证管理员密码 => 必填|字段不能大于25
            ]);
            $data=[ // 把username和password保存到data里
                'username'=>input('username'), // 把add.html中id为username的input标签里用户输入的内容,保存到username这个变量里
                'password'=>md5(input('password')), // 把add.html中id为password的input标签里用户输入的内容,保存到password这个变量里

            ]; // 执行验证
            if (!$validate->check($data)) { // validate -> check这个方法,把要验证的($data)传递进来 // 使用Validate,检查$data数组中包含的数据,如果检查通过,返回true。!表示非。也就是验证失败时,执行下面两行命令

                $validate->getError(); // 使用Validate,获取错误信息(即报错) 
                die;
            }
            // 把管理员账号密码添加到数据库
            //if(Db::name('admin')->insert($data)){ // 插入数据库方式一,下面一行是使用助手函数插入数据到数据库
            if(db('admin')->insert($data)){ // 操作数据库中的admin表->插入$data中的数据 //使用数据库的admin表,插入$data数组中包含的数据,如果插入成功,返回true。执行下面一行命令
                return $this->success('添加管理员成功!','lst'); // 如果插入成功,提示成功,并跳转到lst页面(管理员列表页面)
            }else{ // 如果插入失败,返回false。执行下面一行命令
                return $this->error('添加管理员失败!'); // 如果插入失败,提示失败
            }
            return; // 返回(不再执行下面的return,也就是不再加载管理员添加页面)
        }
        return $this->fetch(); // 加载function对应的页面,也就是加载add页面(管理员添加页面)
    }
}

以上这种形式都是必填的无法测试
//==========执行Validate验证==========↑
//==========删除required==========↓

D:\phpStudy\WWW\niwo\application\admin\view\admin\add.html
去掉里面的required修改为:
<div class="form-group">
                                            <label for="username" class="col-sm-2 control-label no-padding-right">管理员名</label>
                                            <div class="col-sm-6">
                                                <input class="form-control" id="username" placeholder="" name="username" | type="text">
                                            </div>
                                            <p class="help-block col-sm-4 red">* 必填</p>
                                        </div>

                                        <div class="form-group">
                                            <label for="group_id" class="col-sm-2 control-label no-padding-right">管理员密码</label>
                                            <div class="col-sm-6">
                                                <input class="form-control" id="password" placeholder="" name="password" |type="text">
                                            </div>
                                            <p class="help-block col-sm-4 red">* 必填</p>
                                        </div>

//==========删除required==========↑
//==========新建validate、复制Admin.php、修改validate/Admin.php==========↓

D:\phpStudy\WWW\niwo\application\admin
新建validate
D:\phpStudy\WWW\niwo\application\admin\validate

D:\phpStudy\WWW\niwo\application\admin\controller
复制Admin.php到
D:\phpStudy\WWW\niwo\application\admin\validate

修改内容:
<?php
namespace app\admin\validate;
use think\Validate; // 引入了空间类文件
class Admin extends Validate // 继承引用过来的类
{  
    // 验证规则就写在这个数组里面
    protected $rule = [
        'username'  =>  'require|max:25',
        'password' =>  'require',
    ]; 
    // 错误提示
    protected $message  =   [
        'username.require' => '管理员名称必须填写',
        'username.max' => '管理员名称长度不能大于25位',
        'password.require' => '管理员密码必须填写',
    ]; 
    // 验证 scene 场景
    protected $scene = [
        'add'  =>  ['username'=>'require','password'], // 在添加场景限定[]里的验证
        'edit'  =>  ['username'=>'require'],
    ];
}

//==========新建validate、复制Admin.php、修改validate/Admin.php==========↑
//==========实例化 Validate 进行 验证==========↓

D:\phpStudy\WWW\niwo\application\admin\controller\Admin.php
里面的代码修改为:
 $validate = new \think\Validate([ // 实例化Validate(验证类)使用完全限定名称的方法
                // 以数组的形式,写上你要验证的字段,并且写上你要验证的规则,
                'username'  => 'require|max:25', // 验证管理员名称 => 必填|字段不能大于25
                'password' => 'require|max:25' // 验证管理员密码 => 必填|字段不能大于25
            ]);
            $data=[ // 把username和password保存到data里
                'username'=>input('username'), // 把add.html中id为username的input标签里用户输入的内容,保存到username这个变量里
                'password'=>input('password'), // 把add.html中id为password的input标签里用户输入的内容,保存到password这个变量里

            ]; // 执行验证
            if (!$validate->check($data)) { // validate -> chek这个方法,把要验证的($data)传递进来
             $this->error($validate->getError()); // 如果你有错误,die(终止这个程序)
                die;
            }
http://127.0.0.1/niwo/public/index.php/admin/admin/add.html
验证密码不能为空

//==========实例化 Validate 进行 验证==========↓
//==========验证规则和错误提示 ==========↓

到目前为止常用的根目录:app、think
D:\phpStudy\WWW\niwo\application\admin\validate\Admin.php
<?php
namespace app\admin\validate;
use think\Validate; // 引入了空间类文件
D:\phpStudy\WWW\niwo\thinkphp\library\think\Validate.php
内容修改为:
<?php
namespace app\admin\validate;
use think\Validate; // 引入了空间类文件
class Admin extends Validate // 继承引用过来的类
{  // 验证规则就写在这个数组里面
    protected $rule = [
        'username'  =>  'require|max:25',
        'password' =>  'require',
    ]; // 错误提示
    protected $message  =   [
        'username.require' => '管理员名称必须填写',
        'username.max' => '管理员名称长度不能大于25位',
        'password.require' => '管理员密码必须填写',
    ];

}

//==========验证规则和错误提示 ==========↑
//==========场景验证和场景验证规定 ==========↓

D:\phpStudy\WWW\niwo\application\admin\controller\Admin.php
内容修改为:
$data=[ // 把username和password保存到data里
                'username'=>input('username'), // 把add.html中id为username的input标签里用户输入的内容,保存到username这个变量里
                'password'=>md5(input('password')),
                ]; 
	    // 创建一个对象使用Validate方法
            $validate = \think\Loader::validate('Admin'); // 引入的是命名空间类元素(用完限定)
            if(!$validate->check($data)){ // 如果验证不正确,就报错
                $this->error($validate->getError()); die;
            }


scene   场景
D:\phpStudy\WWW\niwo\application\admin\validate\Admin.php
添加验证 scene 场景
 protected $message  =   [
        'username.require' => '管理员名称必须填写',
        'username.max' => '管理员名称长度不能大于25位',
        'password.require' => '管理员密码必须填写',

    ]; 
    // 验证 scene 场景
    protected $scene = [
        'add'  =>  ['username'], // 在添加场景限定[]里的验证
    ];
D:\phpStudy\WWW\niwo\application\admin\controller\Admin.php
添加验证 scene 场景
 ]; // 创建一个对象使用Validate方法
            $validate = \think\Loader::validate('Admin'); // 引入的是命名空间类元素(用完限定)
            if(!$validate->scene('add')->check($data)){ // 使用validate,在add场景下,验证$data
                $this->error($validate->getError()); die;
            }

//==========场景验证和场景验证规定 ==========↑







阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页