在Laravel中,传递不同类型的闪存消息到会话中的最佳方法

18 浏览
0 Comments

在Laravel中,传递不同类型的闪存消息到会话中的最佳方法

我正在使用Laravel制作我的第一个应用程序,并尝试理解会话闪存消息。据我所知,在我的控制器动作中,我可以通过以下方式设置闪存消息

Redirect::to('users/login')->with('message', 'Thanks for registering!'); //is this actually OK?

用于重定向到另一个路由的情况,或者

Session::flash('message', 'This is a message!'); 

在我的主体刀片模板中,我会有:

@if(Session::has('message'))

{{ Session::get('message') }}

@endif

您可能已经注意到,我在我的应用程序中使用的是Bootstrap 3,并希望利用不同的消息类:alert-infoalert-warningalert-danger等。

假设在我的控制器中,我知道要设置什么类型的消息,那么传递和显示它的最佳方式是什么?我应该为每个类型单独设置会话消息(例如,Session :: flash('message_danger','这是一个恶性消息!出了点问题。'); )吗?然后,我在我的刀片模板中需要为每个消息设置一个单独的if语句。

任何建议将不胜感激。

admin 更改状态以发布 2023年5月21日
0
0 Comments

在你的视图中:

  @foreach (['danger', 'warning', 'success', 'info'] as $msg)
    @if(Session::has('alert-' . $msg))
    

{{ Session::get('alert-' . $msg) }}

@endif @endforeach

然后在控制器中设置一个闪存消息:

Session::flash('alert-danger', 'danger');
Session::flash('alert-warning', 'warning');
Session::flash('alert-success', 'success');
Session::flash('alert-info', 'info');

0
0 Comments

一个解决方案是将两个变量闪存到会话中:

  1. 消息本身
  2. 您的提示框的“类”

例如:

Session::flash('message', 'This is a message!'); 
Session::flash('alert-class', 'alert-danger'); 


然后在您的视图中:

@if(Session::has('message'))

{{ Session::get('message') }}

@endif


请注意,我已经将默认值放入了Session::get()。这样,只有在警告不是alert-info类时,您才需要覆盖它。
(这是一个快速示例,未经测试:))

0