В Laravel 4 я хочу перенаправить пользователя на страницу, откуда пришел запрос. Например, пользователь пытается обновить свой профиль, поэтому редактирует профиль и удаляет SAVE. В контроллере я делаю обновление и обычно делаю Redirect::to('profile')->with('message','Profile saved!')
. Но я хочу просто перенаправить его обратно с сообщением. Может быть что-то вроде Redirect::back()->with('message','Operation Successful !')
, если это доступно. Я хочу, чтобы он был более общим, и я могу использовать его где угодно.
Laravel 4 - перенаправлять обратно на ту же страницу, где запрос поступает из
Ответ 1
Да, это доступно:
return Redirect::back()->with('message','Operation Successful !');
Но поскольку это перенаправленный запрос, вам нужно получить доступ к сообщению, используя:
echo Session::get('message');
Ответ 2
Короче: Да
Вы можете использовать
Redirect::back()->withMessage('Profile saved!')
вместо
Redirect::to('profile')->withMessage('Profile saved!')
* отличная функция в Laravel, которая анализирует ваш camelCase на ->with('name', 'value')
, так что ->withName('value')
работает точно так же.
Также....
Я предполагаю, что ваша форма привязана к модели, такой как Form::model($user, [...]
, чтобы предварительно заполнить поля формы, но если нет, вы можете захотеть повторно заново ввести вход в перенаправление (или если ваша проверка не удалась и вы хотите чтобы пользователь мог исправить недопустимую информацию).
Только фрагмент [untested]...
// [[... validation and other magic here]]
if ($validator->fails()) {
return Redirect::back()
->withMessage($message_fail)
->withErrors($validator)
->withInput();
}
return Redirect::back()
->withMessage($message_success)
Надеюсь, что это поможет!
Twitter: @ErikOnTheWeb
Ответ 3
Вы должны не использовать Redirect::back()
. Да, это заманчиво и, похоже, именно то, что вам нужно. Но:
Метод back()
использует атрибут "referer" заголовка запроса. Таким образом, пользовательский агент, обычно браузер, сообщает серверу (и Laravel) URL-адрес, с которого он приходит. (так как Wikipedia говорит: referer - это орфографическая ошибка реферера) Но не каждый пользовательский агент/браузер предоставит эту информацию! Я использую Opera, и я не разрешаю ей передавать референта в целом! Поэтому back()
не будет работать для меня. (Да, я могу разрешить это для сайта, но я способен лениться. И, к сожалению, я не доверяю вашему сайту.)