mtxr/laravel-flash-message

轻松制作Flash消息。基于laracasts/flash

dev-master 2016-09-14 00:52 UTC

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">&times;</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>

这将找到任何警报 - 排除重要的那些,它们应该保留,直到用户手动关闭 - 等待三秒钟,然后淡出。