首页 > 解决方案 > Laravel 注册控制器错误 - Response::setContent() 必须是字符串类型或 null

问题描述

尝试注册用户时遇到此错误。我想注册通过了,因为数据被插入到数据库中,但随后它抛出了这个错误,而不是重定向到仪表板。 我对此有点陌生,所以我不确定错误来自哪里。我已经尝试在网上搜索解决方案,但没有遇到任何问题。这里

这是我的注册控制器

protected $redirectTo = RouteServiceProvider::HOME;

    protected function redirectTo()
    {

        $user = auth()->user();

        if ($user->role == 'guest') {
            return route('guest.profile');
        } else if ( $user->role == 'superadmin' ) {
            return route('superadmin.home');
        }

    }

    public function __construct()
    {
        $this->middleware('guest');
    }
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'first_name' => ['required', 'string', 'max:255'],
            'last_name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:6', 'confirmed'],
        ]);
    }

    protected function create(array $data)
    {
        return User::create([
            'first_name' => $data['first_name'],
            'last_name' => $data['last_name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }

标签: phplaravelregistration

解决方案


终于看到我的错误了。应该在重定向方法中添加一个 else 块。添加它并且错误消失了。

protected function redirectTo()
{
    $user = auth()->user();

    if ($user->role == 'guest') {
        return route('guest.profile');
    } else if ( $user->role == 'superadmin' ) {
        return route('superadmin.home');
    } else {
        return route('home');
    }
}

谢谢大家的帮助


推荐阅读