#php #laravel #redirect #routes
#php #laravel #перенаправление #маршруты
Вопрос:
Вместо отдельной страницы входа я использую модальную для входа пользователя. Я хочу перенаправить зарегистрированного пользователя на страницу, где открылась модальная форма.
Я попытался изменить LoginController
с return Redirect::back();
помощью, но он вернулся с надписью «Заголовок может содержать не более одного заголовка, обнаружена новая строка».
Это мой модифицированный LoginController.php
protected function redirectTo()
{
return Redirect::back();
}
Возможно, я следую совершенно неправильному способу сделать это. Так что я открыт для любых предложений. Заранее спасибо за ответы.
Ответ №1:
В вашем AppHttpControllersAuthLoginController
Переопределите authenticated
функцию с помощью этого:
protected function authenticated(Request $request, $user) {
return redirect('/'.$request->path());
}
$request->path()
Будет получен исходный путь запроса.
@Редактировать, чтобы увидеть комментарий владельца в другом ответе
Чтобы также получить параметр url, например /...?p=477
. Вы можете отредактировать свою модальную форму аутентификации, чтобы иметь этот скрытый ввод:
<input type="hidden" name="current_page" value="{{Request::getRequestUri()}}">
Таким образом, в вашем AppHttpControllersAuthLoginController
Переопределите authenticated
функцию с помощью этого:
protected function authenticated(Request $request, $user) {
return redirect($request['current_page']);
}
Надеюсь, это поможет
Комментарии:
1. Это должно быть «использовать Illuminate Http Request» вместо «Env Request». После этого изменения это моя защищенная функция logincontroller redirectTo(Request $request) { return redirect($request[‘current_page’]); } И это сработало. Спасибо за помощь.
Ответ №2:
Не делайте Redirect::back()
, просто используйте redirect('/your_page_where_modal_appears')
Комментарии:
1. Спасибо за совет, но, как я уже сказал, есть сотни сообщений. Я не хочу перенаправлять на статическую страницу. Я хочу перенаправить пользователя на страницу, на которую он вошел. Например, если он хочет войти в систему, в URL страницы …/?p = 477 после успешного процесса входа в систему я хочу перенаправить его обратно на p = 477. И проблема в том, что; Я понятия не имею, как это сделать.