В Laravel после регистрации или авторизации можно остаться на текущей странице с помощью перенаправления пользователя на предыдущую страницу.
По умолчанию, Laravel автоматически перенаправляет пользователя на URL, указанный в свойстве $redirectTo
в классе RedirectsUsers
. Это свойство находится в трейте AuthenticatesUsers
для авторизации и RegistersUsers
для регистрации.
Чтобы изменить это поведение и оставить пользователя на текущей странице, нужно переопределить метод redirectTo()
в соответствующем контроллере. Например, в контроллере LoginController
для авторизации:
use IlluminateHttpRequest; use IlluminateSupportFacadesRedirect; // ... protected function redirectTo() { return request()->headers->get('referer'); }
В приведенном примере мы используем метод request()->headers->get('referer')
, чтобы получить URL предыдущей страницы. Затем мы возвращаем этот URL в методе redirectTo()
, чтобы Laravel перенаправил пользователя на ту же страницу.
Если вы хотите изменить поведение после успешной регистрации, вы можете переопределить метод registered()
в контроллере RegisterController
:
protected function registered(Request $request, $user) { return redirect()->intended($this->redirectPath()); }
Метод registered()
вызывается после успешной регистрации и принимает экземпляр Request
и пользователя, которого только что зарегистрировали. В этом методе мы используем метод redirect()->intended($this->redirectPath())
, чтобы перенаправить пользователя на предыдущую страницу (intended()
) или на другой URL, определенный в методе redirectPath()
, если предыдущей страницы нет.
В обоих случаях вы можете изменить логику перенаправления на свое усмотрение, в зависимости от требований вашего проекта.