在Laravel中,传递不同类型的闪存消息到会话中的最佳方法
在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-info
,alert-warning
,alert-danger
等。
假设在我的控制器中,我知道要设置什么类型的消息,那么传递和显示它的最佳方式是什么?我应该为每个类型单独设置会话消息(例如,Session :: flash('message_danger','这是一个恶性消息!出了点问题。');
)吗?然后,我在我的刀片模板中需要为每个消息设置一个单独的if语句。
任何建议将不胜感激。
admin 更改状态以发布 2023年5月21日
在你的视图中:
@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');
一个解决方案是将两个变量闪存到会话中:
- 消息本身
- 您的提示框的“类”
例如:
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
类时,您才需要覆盖它。
(这是一个快速示例,未经测试:))