Как перенаправить пользователя на предыдущий URL после регистрации в Laravel - PullRequest
0 голосов
/ 08 апреля 2019

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

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

Пример того, что я ищу:

  1. Клики пользователей регистрируются со страницы X.
  2. Пользователь переходит на страницу регистрации
  3. Затем пользователь перенаправляется обратно на страницу X вместо домашней страницы
  4. Пользователь всегда перенаправляется обратно на страницу, на которой он был ранее.

Вот мой RegisterController.php:

//protected $redirectTo = '/'; (Originally Returning Back To Home)

//WHAT I'M USING NOW TO TRY AND REDIRECT BACK TO PREVIOUS PAGE

    protected function redirectTo()
    {
    return url()->previous();
    }

// Guards/Redirects user to home if logged in and tries to access register page again.

    public function __construct()
    {
        $this->middleware('guest');
    } 


// If users email exists in my transaction database, I show them a Thank you message upon registering. And Still want to redirect them back to previous page.

    public function registered($request, $user) {
        $where = [
            ['customer_email', $user->email],
            ['user_id', null],
        ];

        if (Transaction::where($where)->exists()) {
            Transaction::where($where)->update(['user_id' => $user->id]);

            return url()->previous()
                ->with('success', 'Thank you for your previous transaction! Go to your Profile to review your transaction history.');
        }
    }

Вот как я получилэто работает с контроллером входа, но не работает с контроллером регистра.

public function showLoginForm()
{
    if (session('link')) {
        $myPath     = session('link');
        $loginPath  = url('/login');
        $previous   = url()->previous();

        if ($previous = $loginPath) {
            session(['link' => $myPath]);
        }else{
            session(['link' => $previous]);
        }
    }
    else{
        session(['link' => url()->previous()]);
    }
    return view('auth.login');
}

protected function authenticated(Request $request, $user)
{
    return redirect(session('link'));      
}

Любая помощь будет признательна.

1 Ответ

1 голос
/ 09 апреля 2019

Хорошо, так что вы можете сделать это аналогично вашему контроллеру входа в систему.

Сначала вам нужно будет создать указанную ниже функцию в вашем контроллере регистрации, чтобы переопределить значение по умолчанию и сохранить URL-адрес в сеансе

/**
* Show the application registration form.
*
* @return \Illuminate\Http\Response
*/
public function showRegistrationForm()
{
    if (session('link')) {
        $myPath     = session('link');
        $registerPath  = url('/register');
        $previous   = url()->previous();

        if ($previous = $registerPath) {
            session(['link' => $myPath]);
        }else{
            session(['link' => $previous]);
        }
    } else{
        session(['link' => url()->previous()]);
    }
    return view('auth.register');
}

Затем создайте следующую функцию, снова в контроллере регистрации

protected function redirectTo()
{
    return redirect(session('link'))->with('success', 'Thank you for your previous transaction! Go to your Profile to review your transaction history.');
}

Вы также можете установить маршрут по умолчанию, если они напрямую обращаются к форме регистрации.Так что

protected function redirectTo()
{
    if(session('link')){
        return redirect(session('link'))->with('success', 'Thank you for your previous transaction! Go to your Profile to review your transaction history.');
    }
    return redirect('/home')->with('success', 'Thank you for your previous transaction! Go to your Profile to review your transaction history.');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...