TP6+Layui+x-admin密码设置页面

1、创建修改密码控制器
创建一个空的控制器

php think make:controller admin@Manager --plain

TP6+Layui+x-admin密码设置页面_第1张图片

提示这个就创建好了

2、调试(页面加载、数据提交和响应)
(1)创建后台方法 app\admin\controller\Manager.php

(2)模板部分代码

6到16个字符

(3)js部分


TP6+Layui+x-admin密码设置页面_第2张图片
image.png

(4)通过打印结果我们可以看出数据新旧密码都在field内,想后台发送的数据改为data.field


TP6+Layui+x-admin密码设置页面_第3张图片
image.png

TP6+Layui+x-admin密码设置页面_第4张图片
image.png

(5)打印查看传递给后台的数据
TP6+Layui+x-admin密码设置页面_第5张图片
image.png

TP6+Layui+x-admin密码设置页面_第6张图片
image.png

(6)调试与后台通讯,并未实际调试成功


TP6+Layui+x-admin密码设置页面_第7张图片
image.png

TP6+Layui+x-admin密码设置页面_第8张图片
image.png

TP6+Layui+x-admin密码设置页面_第9张图片
image.png

TP6+Layui+x-admin密码设置页面_第10张图片
image.png

TP6+Layui+x-admin密码设置页面_第11张图片
image.png

3、后台模型讲解
(1)讲解如果引入的是

use think\facade\Request;
halt($request::post());

TP6+Layui+x-admin密码设置页面_第12张图片
image.png

ruguo
如果引用的是

use think\post;
halt($request->post());

TP6+Layui+x-admin密码设置页面_第13张图片
image.png

(2)创建模型

php think make:model admin@Manager

image.png
TP6+Layui+x-admin密码设置页面_第14张图片
image.png

admin\model\Manager.php


TP6+Layui+x-admin密码设置页面_第15张图片
image.png

admin\controller\Manager.php


TP6+Layui+x-admin密码设置页面_第16张图片
image.png

前台已经可以弹出后台模型中的提示信息


TP6+Layui+x-admin密码设置页面_第17张图片
image.png

4、管理员密码修改-数据处理
(1)js部分 与2(6)中一致


(2)后台控制器

//密码修改
    public function dopassword(Request $request)
    {
        //后台登录了才可以进行密码修改,这里给一个模拟的session,最后一个admin是作用域
        session('adminuser','admin','admin');
        session('adminid','1','admin');

        $data = $request::post();
        $result = ManagerModel::store($data);
        return json($result);
    }

(3)admin/model/manager模型

//处理密码修改数据
    public static function store($data){
        //判断旧密码
        $manager = self::find(session('adminid',"",'admin'));
        if(!$manager){
            return ['code'=>0,'msg'=>'账号登录异常~!!!'];
        }
        //验证旧密码
        if(password_verify($data['oldpass'],$manager['password'])!==true){
            return ['code'=>0,'msg'=>'旧密码输入不正确~!'];
        }
        //新密码和确认密码
        if($data['newpass']!==$data['repass']){
            return ['code'=>0,'msg'=>"两次密码输入不一致"];
        }
        //把新密码更新到数据库
        $manager->password = password_hash($data['newpass'],PASSWORD_DEFAULT);
        $result = $manager->save();
        if($result){
            return ['code'=>1,'msg'=>'密码修改成功~!!!'];
        }else{
            return ['code'=>0,'msg'=>'修改失败~!'];
        }
    }

(4)效果


TP6+Layui+x-admin密码设置页面_第18张图片
image.png

TP6+Layui+x-admin密码设置页面_第19张图片
image.png

5、管理员密码修改-验证器的使用
(1)如果app\admin目录下没有validate使用以下命令创建验证类

php think make:validate admin@Manager

TP6+Layui+x-admin密码设置页面_第20张图片
image.png

TP6+Layui+x-admin密码设置页面_第21张图片
image.png

(2)app\admin\validate\Manager.php

  ['规则1','规则2'...]
     * @var array
     */ 
    protected $rule = [
        'oldpass' => 'require|min:6',
        'newpass' => 'require|min:6|confirm:repass',
    ];
    
    /**
     * 定义错误信息
     * 格式:'字段名.规则名' =>  '错误信息'
     */ 
    protected $message = [
        'oldpass.require' =>'旧密码不能为空',
        'oldpass.min' =>'旧密码不能力少于6位',
        'newpass.require'=>'新密码不能为空',
        'newpass.min' =>'新密码不能力少于6位',
        'oldpass.confirm' => '两次密码不一致',
    ];
}

(3)app\admin\model\Manager.php 6.0手册-验证器


TP6+Layui+x-admin密码设置页面_第22张图片
image.png
//数据的基础验证 
        try {
            validate(ManagerValidate::class)->check($data);
        } catch (ValidateException $e) {
            // 验证失败 输出错误信息
            return ['code'=>0,'msg'=>$e->getError()];
        }

(4)效果


TP6+Layui+x-admin密码设置页面_第23张图片
image.png

6、自定义函数和代码优化
主要是优化提示消息
(1)在app\admin\common.php 公共方法文件中

$code,'msg'=>$msg];
}

(2)模型中app\admin\model\Manager.php


TP6+Layui+x-admin密码设置页面_第24张图片
image.png

(3)测试消息提示正常

你可能感兴趣的:(TP6+Layui+x-admin密码设置页面)