我试图重定向到上一页的消息时,有一个致命的错误。

App::fatal(function($exception)
{
    return Redirect::back()->with('msg', 'The Message');
}

在视图中尝试访问msg

Sessions::get('msg')

但是什么都没有渲染,是我做错了吗?


当前回答

# Laravel-9 刀片内部,该重定向返回操作启动的地方

   return redirect()->back()->with('message', "The Message");            

刀片内部的这种形式,将在上述动作后返回

                @if(session()->has('message'))
                <p class="alert alert-success"> {{ session()->get('message') }}</p>
                @endif

其他回答

另一种方法是

控制器

use Session;
       
Session::flash('message', "Special message goes here");
return Redirect::back();

View

@if (Session::has('message'))
   <div class="alert alert-info">{{ Session::get('message') }}</div>
@endif

我自己不再为laravel写这篇文章,而是支持为您处理这一切的Laracasts包。它真的很容易使用,并保持您的代码干净。甚至还有一个laracast来说明如何使用它。你所要做的就是:

通过Composer导入包。

"require": {
  "laracasts/flash": "~1.0"
}

在app/config/app.php中包含服务提供者。

'providers' => [
  'Laracasts\Flash\FlashServiceProvider'
];

在底部的同一个文件中添加一个facade别名:

'aliases' => [
  'Flash' => 'Laracasts\Flash\Flash'
];

将HTML拖到视图中:

@include('flash::message') 

在消息的右侧有一个关闭按钮。这依赖于jQuery,所以请确保在引导之前添加它。

可选的变化:

如果你不使用bootstrap或者想要跳过flash消息的包含并自己编写代码:

@if (Session::has('flash_notification.message'))
  <div class="{{ Session::get('flash_notification.level') }}">
    {{ Session::get('flash_notification.message') }}
  </div>
@endif

如果你想查看@include('flash::message')拉进来的HTML,你可以在vendor/laracasts/flash/src/views/message.blade.php中找到它。

如果你需要修改部分做:

php artisan view:publish laracasts/flash

这两个包视图现在将位于' app/views/packages/laracasts/flash/'目录中。

它适用于我和Laravel版本是^7.0

在控制器

return back()->with('success', 'Succesfully Added');

关于Blade文件

@if (session('success'))
      <div class="alert alert-success">
         {!! session('success') !!}
      </div>
@endif

有关文档,请参阅Laravel文档

这是100%的解决方案

*上面提到的解决方案不适合我,但这一个适用于我在laravel 5.8:

$status = 'Successfully Done';
return back()->with(['status' => $status]);

并接受它为:

@if(session()->has('status'))
     <p class="alert alert-success">{{session('status')}}</p>
@endif

对于拉拉维尔3

只是提醒一下@giannis christofakis的回答;对于任何使用Laravel 3替代

return Redirect::back()->withErrors(['msg', 'The Message']);

:

return Redirect::back()->with_errors(['msg', 'The Message']);