我正在制作一个应用程序,并将其添加到视图模板中,以显示所有通知/状态消息/警报:
@if ( ! empty( session('notifications') ) )
@foreach( session('notifications') as $notification )
<div class="alert alert-{{ $notification['notification_type'] }}" role="alert">
<strong>{{ $notification['notification_title'] }}</strong> - {{ $notification['notification_message'] }}
</div>
@endforeach
@endif
我正在寻找一种方法,可以将通知简单地传递到存储在session('notifications')
中的控制器中任何地方的Collection中。
但是,每当加载页面时,该会话变量就开始为空。因此,我需要两者:
Session::forget('notifications')
,ref)。 这样的代码在哪里?我对来自Laravel的Laravel并不陌生,我只是会在functions.php中向init
添加一个动作。但是Laravel中的等效项在哪里?
这是在Laravel中控制通知的正确方法吗?我称它为通知,缺少更好的用词。也许是“警报”还是“状态”?因为我可以看到notification是相关的东西,但是还有其他东西。
答案 0 :(得分:1)
我认为您正在寻找的是https://laravel.com/docs/5.7/session#flash-data
对吗?
答案 1 :(得分:0)
对于其他可能需要它的人,这是一个用于添加多个Flash消息的功能。
将其放置在全局可访问的位置(this post描述了建立此类位置的方法):
function add_flash_message( array $notification){
session()->flash( 'any_notifications', true );
if(
empty( session( 'notification_collection' ) )
){
// If notification_collection is either not set or not a collection
$new_collection = new \Illuminate\Support\Collection();
$new_collection->push([
'notification_title' => $notification['title'],
'notification_message' => $notification['message'],
'notification_type' => $notification['type'],
]);
session()->flash( 'notification_collection', $new_collection );
} else {
// Add to the notification-collection
$notification_collection = \Session::get( 'notification_collection' );
$notification_collection->push( [
'notification_title' => $notification['title'],
'notification_message' => $notification['message'],
'notification_type' => $notification['type'],
]);
session()->flash( 'notification_collection', $notification_collection );
}
}
这是什么,它检查是否已经有闪光消息。如果有的话,它将添加新的;如果没有,它将创建一个新集合并添加到该集合中。
add_flash_message( [
'title' => 'The file does not exist',
'message' => 'The chosen file/path does not seem to exist.',
'type' => 'danger'
] );
@if( !empty( Session( 'any_notifications' ) ) )
@foreach (Session('notification_collection') as $notification)
<div class="alert alert-{{ $notification['notification_type'] }}" role="alert">
<strong>{{ $notification['notification_title'] }}</strong> - {{ $notification['notification_message'] }}
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
</div>
@endforeach
@endif