Ошибка контроллера регистрации Laravel — ответ::setContent() должен иметь тип string или null

#php #laravel #registration

#php #laravel #Регистрация

Вопрос:

Я сталкиваюсь с этой ошибкой при попытке зарегистрировать пользователя. Я полагаю, что регистрация проходит, потому что данные вставляются в базу данных, но затем она выдает эту ошибку вместо перенаправления на панель мониторинга. здесь
Я новичок в этом, поэтому я не уверен, откуда берется ошибка. Я уже пытался искать решения в Интернете, но не сталкивался ни с одним.

Вот мой RegisterController

 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']),
        ]);
    }
  

Комментарии:

1. Вы ожидаете попасть на 'guest.profile' 'superadmin.home' маршрут или? Кроме того, не могли бы вы, пожалуйста, опубликовать объявления об этих маршрутах?

2. что происходит, когда они не являются «гостем» или «суперадминистратором»? ничто не возвращается с «другого» пути… и как они могли быть ни тем, ни другим из этих вещей? Я не вижу никакого кода для добавления чего-то вроде «роли» к создаваемому пользователю… вы можете пройти по этой трассировке стека обратно к своему коду, чтобы увидеть, откуда берется эта ошибка

3. хорошо. я, наконец, увидел свою ошибку. извините, это была глупая ошибка. здесь мне нужен был блок else . Спасибо

Ответ №1:

Наконец-то увидел мою ошибку. Предполагалось добавить блок 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');
    }
}
  

Спасибо всем за помощь