TP8笔记250314


6.1.1 创建权限控制器 php think make:controller Auth --plain 6.1.2 创建路由(注意:删除要加token验证): Route::get( login , Auth/create )- name( login.create ); Route::post( login , Auth/save )- name( lo...

6.1.1 创建权限控制器

php think make:controller Auth --plain

6.1.2 创建路由(注意:删除要加token验证):

Route::get('login','Auth/create')->name('login.create');
Route::post('login','Auth/save')->name('login.save');
Route::delete('login','Auth/logout')->name('logout');

就是在这里出的问题,没有分清get,post,delete

6.1.3 在Auth.php中创建控制器方法(待完善):

//用于显示登录页面
    public function create(){
        return view();
    }
    public function save(){

    }
    public function logout(){

    }

后面先不写东西。

6.1.4 在view里面创建文件夹auth,附带同名html模板,要继承默认模板。

6.2 登录页面,用邮箱登录,可以修改注册页模板。

6.3.1 记录旧的表单输入记录,就是刚刚输入的内容,在注册出现问题时,有更改的余地,尤其是输入的内容比较多时,在controllerUser.php中:

            //记录旧表单输入记录
            session('old',$request->post());

6.3.2 在模板视图user下修改create.html,记录一下:

                        <div class="mb-3">
                        <label for="name" class="form-label">用户名:</label>
                        <input type="text" required maxlength="255" value="{:session('old.name')}" class="form-control" placeholder="请输入用户名" id="name" name="name">
                    </div>
                    <div class="mb-3">
                        <label for="email" class="form-label">电子邮箱:</label>
                        <input type="email" required maxlength="255" value="{:session('old.email')}" class="form-control" placeholder="请输入您的电子邮箱" id="email" name="email">
                    </div>

6.4 登录验证

6.4.1 将User.php的验证内容直接复制到Auth.php

    public function save(Request $request)
    {
        try {
            validate(UserValidate::class)->batch()->check($request->post());
            $user = new UserModel();
            $user->name = $request->post('name');
            $user->email = $request->post('email');
            $user->password = sha1($request->post('password').getSalt());
            $user->save();
           /* $data = $request->post();
            $data['password'] = sha1($request->post('password').getSalt());
            $user = UserModel::create($data,['name','email','password']);*/
            return redirect((string) url('User/read',['id' => $user->id]))->with('success','恭喜您,注册成功!');
        } catch (ValidateException $e) {
            //记录旧表单输入记录
            session('old',$request->post());
            // 验证失败
//            dump($e->getError()); // 输出错误信息
            if(!empty($errors = $e->getError())){
                session('errors',$errors);
            }
            return redirect((string)url('User/create'));
        }
    }

注意:类要一起引入:

use app\model\User as UserModel;
use app\Request;
use app\validate\UserValidate;
use think\exception\ValidateException;

6.4.2改为:

    public function save(Request $request)
    {
        try {
            validate([
                'email|邮箱账号' => 'require|email|max:255',
                'password|密码' => 'require|min:6'
            ])->batch()->check($request->post());

//            return redirect((string) url('User/read',['id' => $user->id]))->with('success','恭喜您,注册成功!');
        } catch (ValidateException $e) {
            //记录旧表单输入记录
            session('old',$request->post());

            if(!empty($errors = $e->getError())){
                session('errors',$errors);
            }
            return redirect((string)url('login.create'));
        }
    }

6.4.3 查看登录页,修改:
一个复制粘贴失误,导致都不能用了,真悲催啊,关键还解决不了。这个逻辑太强了。
从头来!

今晚修复,主要问题见上面。


推荐阅读:

收藏

扫描二维码,在手机上阅读

PhpStorm的常用快捷键

TP8笔记250312

评 论
请登录后再评论