注册用户时未生成activation_token,怀疑是creating方法失效

问题描述:

在前台注册用户的时候,报错说 confirm.blade模板并没有传递token。

排查过程:

1.在usercontroller文件里的store方法里打印 $user,发现没有activation_token
2.进数据库查看,发现注册用户的信息已经插入到了数据表,但是activation_token的值是空的。
3.仔细比对/app/Models/User.php ,与老师的一模一样
4.仔细对比这章所用到的所有文件,与老师的一模一样
5.清除缓存也试过了,清除数据库,重新填充数据库也是过了
还是不行。。

user.php

public static function boot()
    {
        parent::boot();
        static::creating(function ($user) {
            $user->activation_token = Str::random(10);
        });
    }

usersController.php

public function store(Request $request)
    {
        $this->validate($request, [
            'name' => 'required|max:50',
            'email' => 'required|email|unique:users|max:255',
            'password' => 'required|confirmed|min:6'
        ]);
        $user = User::create([
            'name' => $request->name,
            'email' => $request->email,
            'password' => bcrypt($request->password),
        ]);
        $this->sendEmailConfirmationTo($user);
        session()->flash('success', '验证邮件已发送到你的注册邮箱上,请注意查收。');

        return redirect('/');
    }

问题:

1.我怎么判断boot方法里的creating代码有没有执行?我尝试在这个代码exit,但是没有中止程序
2.我接下来应该检查哪里?迷茫。。。
3.我暂时将confirm.blade里面的代码清空,先略过这一章,往下面走吧

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

我也遇到这个问题了,应该是没修改到调用的User.php,之前User.php放在Models里了,但调用的User.php一直没换过来,路径都换了还是不行,头疼

3年前 评论
Fzyyy (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!