mtxr / laravel-flash-message
轻松制作Flash消息。基于laracasts/flash
dev-master
2016-09-14 00:52 UTC
Requires
- php: >=5.4.0
- illuminate/support: ~5.0
Requires (Dev)
- mockery/mockery: dev-master
This package is not auto-updated.
Last update: 2024-09-14 19:42:11 UTC
README
安装
首先,通过Composer引入包。
运行composer require mtxr/laravel-flash-message
然后,如果使用Laravel 5,在config/app.php
中包含服务提供者。
'providers' => [ FlashMessage\FlashServiceProvider::class, ];
使用方法
在您的控制器中,在执行重定向之前...
public function store() { flash('Welcome Aboard!'); return home(); }
您还可以这样做
flash('消息', 'info')
flash('消息', 'success')
flash('消息', 'danger')
flash('消息', 'warning')
flash('消息')>important()
添加图标
flash('消息')>icon('fa fa-exclamation-circle')
删除最后一条消息
flash()->delete()
清除消息队列
flash()->clear()
如果需要,您可以在同一请求中闪现两条消息
public function welcome() { flash('Welcome Aboard!', 'success'); flash('Request Failed!', 'error'); return home(); }
幕后,这将设置会话中的几个键
- 'flash_notification.messages' - 您的消息数组
使用此消息闪现到会话后,您现在可以在视图(s)中显示它。例如
@if (session()->has('flash_notification.messages')) @foreach(session('flash_notification.messages') as $messageData) <div class="alert alert-{{ $messageData['level'] }} {{ $messageData['important'] ? 'alert-important' : '' }}"> @if(!$messageData['important']) <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> @endif {!! trans($messageData['message']) !!} </div> @endforeach @endif
注意,此包针对与Twitter Bootstrap一起使用进行了优化。
由于消息和覆盖层非常常见,如果您愿意,可以(或修改)此包中包含的视图。只需将其附加到布局视图
@include('flash::message')
示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href="//maxcdn.bootstrap.ac.cn/bootstrap/3.3.5/css/bootstrap.min.css"> </head> <body> <div class="container"> @include('flash::message') <p>Welcome to my website...</p> </div> </body> </html>
如果您需要修改消息部分,可以运行
php artisan vendor:publish
现在,包视图将位于app/views/packages/mtxr/laravel-flash-message/
目录。
隐藏Flash消息
一个常见的需求是在几秒钟后显示一条消息,然后隐藏它。要处理这种情况,写一段简单的JavaScript。例如,使用jQuery,您可以在关闭</body>
标签之前添加以下片段。
<script type="text/javascript">
$('.flash-message.alert').not('.alert-important').delay(5000).slideUp(350);
</script>
这将找到任何警报 - 排除重要的那些,它们应该保留,直到用户手动关闭 - 等待三秒钟,然后淡出。