Как перенаправить пользователя после создания метода laravel6? - PullRequest
0 голосов
/ 14 февраля 2020

Я сделал регистрационную форму на front_page и хочу перенаправить пользователя после успешной регистрации на / home страницу, но вместо этого я получаю массив и пользователь не перенаправляется.

  {"email":"example@example.com","paypal_email":"example@example.com","updated_at":"2020-02- 
  14 
  08:16:32","created_at":"2020-02-14 08:16:32","id":1}

Мой маршрут:

 Route::post('/', 'Auth\RegisterController@create')->name('auth.register');

Регистрация контроллера:

      public function create(Request $request)
{
    return User::create([
        'email' => $request['email'],
        'paypal_email' => $request['paypal_email'],
        'password' => Hash::make($request['password']),
    ]);


}    

  public $redirectTo = '/home';

Ответы [ 2 ]

3 голосов
/ 14 февраля 2020

Измените это:

public function create(Request $request)
{
    return User::create([
        'email' => $request['email'],
        'paypal_email' => $request['paypal_email'],
        'password' => Hash::make($request['password']),
    ]);


}    

на это:

public function create(Request $request) {
    $create = User::create([
        'email' => $request['email'],
        'paypal_email' => $request['paypal_email'],
        'password' => Hash::make($request['password']),
    ]);
    if($create){
       return redirect('/home');
    }

    //Return errors here  
}

Чтобы узнать больше о laravel перенаправлениях, нажмите здесь

1 голос
/ 14 февраля 2020

Вы не должны вызывать метод create напрямую по нескольким причинам.

  1. запрос не проверяется.
  2. , если вы хотите инициировать некоторые события во время регистрации этого не произойдет.
  3. он не будет автоматически входить в систему пользователя.

Метод create действительно предназначен для laravel trait RegistersUsers внутреннего использования. Вы можете сохранить контроллер таким образом, вам нужно только изменить свой маршрут на register.

Route::post('/', 'Auth\RegisterController@register')->name('auth.register');

Таким образом, пользователь должен быть создан и перенаправлен на домашнюю страницу.

И существует причина, по которой public $redirectTo = '/home'; этот атрибут существует, используя метод create напрямую, вы полностью игнорируете атрибут.

...