1、创建修改密码控制器
创建一个空的控制器
php think make:controller admin@Manager --plain
提示这个就创建好了
2、调试(页面加载、数据提交和响应)
(1)创建后台方法 app\admin\controller\Manager.php
(2)模板部分代码
(3)js部分
(4)通过打印结果我们可以看出数据新旧密码都在field内,想后台发送的数据改为data.field
(5)打印查看传递给后台的数据
(6)调试与后台通讯,并未实际调试成功
3、后台模型讲解
(1)讲解如果引入的是
use think\facade\Request;
halt($request::post());
ruguo
如果引用的是
use think\post;
halt($request->post());
(2)创建模型
php think make:model admin@Manager
admin\model\Manager.php
admin\controller\Manager.php
前台已经可以弹出后台模型中的提示信息
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)效果
5、管理员密码修改-验证器的使用
(1)如果app\admin目录下没有validate使用以下命令创建验证类
php think make:validate admin@Manager
(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手册-验证器
//数据的基础验证
try {
validate(ManagerValidate::class)->check($data);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return ['code'=>0,'msg'=>$e->getError()];
}
(4)效果
6、自定义函数和代码优化
主要是优化提示消息
(1)在app\admin\common.php 公共方法文件中
$code,'msg'=>$msg];
}
(2)模型中app\admin\model\Manager.php
(3)测试消息提示正常