Laravel redirect back with () message
попытка перенаправления на предыдущую страницу с сообщением, когда есть фатальная ошибка.
App::fatal(function($exception)
{
return Redirect::back()->with('msg', 'The Message');
}
в представлении пытается получить доступ к msg с
Sessions::get('msg')
но ничего не отображается, я делаю что-то неправильно здесь ?
12 ответов:
попробовать
return Redirect::back()->withErrors(['msg', 'The Message']);и внутри вашего взгляда назовите это
@if($errors->any()) <h4>{{$errors->first()}}</h4> @endif
Laravel 5
контроллер
return redirect()->back()->with('success', ['your message,here']);лезвие:
@if (\Session::has('success')) <div class="alert alert-success"> <ul> <li>{!! \Session::get('success') !!}</li> </ul> </div> @endif
альтернативный подход будет
контроллер
Session::flash('message', "Special message goes here"); return Redirect::back();посмотреть
@if (Session::has('message')) <div class="alert alert-info">{{ Session::get('message') }}</div> @endif
в Laravel 5.4 для меня работало следующее:
return back()->withErrors(['field_name' => ['Your custom message here.']]);
у вас ошибка (опечатка):
Sessions::get('msg')// an extra 's' on endдолжно быть:
Session::get('msg')Я думаю, теперь это должно работать, это делает для меня.
просто установите флэш-сообщение и перенаправить обратно с вашего контроллера функции.
session()->flash('msg', 'Successfully done the operation.'); return redirect()->back();и затем вы можете получить сообщение в виде файла Блейда.
{!! Session::has('msg') ? Session::get("msg") : '' !!}
я перестал писать эту себя за то, что Laravel в пользу пакет Laracasts, который обрабатывает все это для вас. Он очень прост в использовании и сохраняет ваш код в чистоте. Есть даже laracast это охватывает, как его использовать. Все что вам нужно сделать:
вытащить в пакет через Composer.
"require": { "laracasts/flash": "~1.0" }включите поставщика услуг в app / config / app.РНР.
'providers' => [ 'Laracasts\Flash\FlashServiceProvider' ];добавить псевдоним фасада к этому же файлу на странице снизу:
'aliases' => [ 'Flash' => 'Laracasts\Flash\Flash' ];вытяните HTML в представление:
@include('flash::message')есть кнопка закрытия справа от сообщения. Это зависит от jQuery, поэтому убедитесь, что он добавлен перед загрузкой.
изменения:
если вы не используете bootstrap или хотите пропустить включение флэш-сообщения и написать код самостоятельно:
@if (Session::has('flash_notification.message')) <div class="{{ Session::get('flash_notification.level') }}"> {{ Session::get('flash_notification.message') }} </div> @endifесли вы хотите, чтобы просмотреть HTML вытащил
@include('flash::message'), вы можете найти его вvendor/laracasts/flash/src/views/message.blade.php.Если вам нужно изменить частичные сделать:
php artisan view:publish laracasts/flashдва вида пакетов теперь будут расположены в каталоге' app/views/packages/laracasts/flash/'.
В Laravel 5.5:
return back()->withErrors($arrayWithErrors);в представлении с помощью лезвия:
@if($errors->has()) <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> @endif
я столкнулся с такой же проблемой и это сработало.
контроллер
return Redirect::back()->withInput()->withErrors(array('user_name' => $message));посмотреть
<div>{{{ $errors->first('user_name') }}}</div>
Для Laravel 3
просто хедз-ап на @giannis christofakis ответ; для тех, кто использует Laravel 3 заменить
return Redirect::back()->withErrors(['msg', 'The Message']);С:
return Redirect::back()->with_errors(['msg', 'The Message']);
Я получил это сообщение, когда я пытался перенаправить как:
public function validateLogin(LoginRequest $request){ // return redirect()->route('sesion.iniciar') ->withErrors($request) ->withInput();когда правильный путь:
public function validateLogin(LoginRequest $request){ // return redirect()->route('sesion.iniciar') ->withErrors($request->messages()) ->withInput();
Laravel 5.6.*
контроллер
if(true) { $msg = [ 'message' => 'Some Message!', ]; return redirect()->route('home')->with($msg); } else { $msg = [ 'error' => 'Some error!', ]; return redirect()->route('welcome')->with($msg); }Шаблон Лезвие
@if (Session::has('message')) <div class="alert alert-success" role="alert"> {{Session::get('message')}} </div> @elseif (Session::has('error')) <div class="alert alert-warning" role="alert"> {{Session::get('error')}} </div> @endifEnyoj
Comments