bnjns/laravel-notifications

此包已被废弃,不再维护。没有建议的替代包。

一个小型包,为Laravel 5提供显示闪存通知的简单方法。

v3.0.0 2019-09-09 19:37 UTC

README

Latest Version on Packagist Software License

此包提供了一种简单但强大地将闪存通知集成到Laravel应用程序中的方法。

此包包括创建闪存消息的服务端代码,以及与通知动态交互的客户端代码。

需求

JavaScript需要jQuery 2.x或更高版本。

默认情况下,此包使用Bootstrap和Font Awesome,尽管可以配置其他提供者。

安装

要安装,请运行以下命令之一:

$ composer require bnjns/laravel-notifications

或将其添加到您的composer.json文件的require部分

"bnjns/laravel-notifications": "dev-master"

设置

  1. 将以下内容添加到config/app.php文件中的providers条目
    bnjns\LaravelNotifications\NotificationServiceProvider::class,
  2. 将以下内容添加到aliases条目以使用外观
    'Notify' => bnjns\LaravelNotifications\Facades\Notify::class,
  3. 运行以下命令以发布包视图
    $ php artisan vendor:publish --provider="bnjns\LaravelNotifications\NotificationServiceProvider"

注意:对于Laravel 5.5+,步骤1和2不是必需的。

配置

包的大部分内容都可以通过包含的config/notifications.php文件进行自定义。

  • timeout设置自动通知在淡出之前应可见多长时间
  • classes.provider设置通知样式的"提供者" - 这用于为每个通知级别设置正确的类前缀
  • classes.levels设置每个通知级别使用的类
  • icons.provider设置图标样式的"提供者" - 这用于为每个通知级别设置正确的图标类前缀
  • icons.levels设置每个通知级别使用的图标类
  • icons.close设置关闭按钮的图标类

Blade模板

要自定义Blade模板,只需修改vendor/laravel-notifications/notification.blade.php

您可以根据需要对其进行自定义。通知将作为关联数组传递到视图中,以下元素可用:

  • 级别
  • 标题
  • 消息
  • 带有提供者前缀的class
  • 带有提供者前缀的icon
  • 作为字符串的attributes

用法

包含资产

资产不再可发布。如果您想使用包中包含的样式或脚本,请在您的webpack.mix.js文件中包含它们。

包含配置

如果您想能够动态创建通知,请确保包含配置,以便插件可以正确格式化通知。

要包含配置,只需在您的<body>结尾处调用{!! Notify::config() !!}即可。这将在<script>标签中创建一个NotificationConfig对象。

创建通知

您可以创建以下类型的通知:

  • info
  • success
  • warning
  • error

要创建通知,只需调用相关方法

Notify::info('Your info message');
Notify::success('Your success message');
Notify::warning('Your warning message');
Notify::error('Your error message');

如果您想包含标题,将其作为第二个参数传递

Notify::info('Your info message', 'Info title');
Notify::success('Your success message', 'Success title');
Notify::warning('Your warning message', 'Warning title');
Notify::error('Your error message', 'Error title');

修改通知

创建通知时,通知对象将被返回,以便您稍后修改。

$notification = Notify::info('An example info message');
$notification->success() // Changes to a success notification

可以在通知上调用的方法

  • $notification->info()将其更改为信息通知
  • $notification->success()将其更改为成功通知
  • $notification->warning()将其更改为警告通知
  • $notification->error()将其更改为错误通知
  • $notification->title('Notification title')更改通知标题
  • $notification->message('Notification message')更改通知消息

设置属性

如果您想设置通知元素的特定HTML属性(例如ID),只需调用attribute()方法

$notification->attribute('name', 'value');

通知包

此包允许您将通知分成不同的列表或“包”。这意味着您可以在网页的不同部分输出不同的通知。

要指定一个包,只需调用bag()方法

$notification->bag('bagName');

如果您没有明确指定包,通知将被放置在default包中。

使通知永久显示

默认情况下,所有通知都设置为3秒后自动删除。这可以通过data-close属性进行更改

  • data-close="auto"通知将在3秒后自动删除
  • data-close="manual"通知将提供一个关闭按钮,允许手动删除,但它们不会自动隐藏
  • data-close="none"通知不能被用户删除

这可以通过手动设置属性或调用$notification->close('closeType')来实现

将“永久”通知(即只能手动关闭的通知)与其他通知分开是很常见的。为此,您可以调用$notification->permanent();这将设置close属性为manual并将通知移动到permanent包。

显示通知

此包提供了一个方便的方法来正确输出一个包中的所有通知

{!! Notify::renderBag('bagName') !!}

建议您使用此方法,因为它确保通知被正确包含,以便jQuery插件可以动态地将通知添加到包中。

但是,如果您愿意,您可以手动输出通知。

手动输出通知

此包包括几个帮助输出通知的方法

  • Notify::has()检查是否有任何通知
  • Notify::has('bag')检查给定包中是否有任何通知
  • Notify::get('bag')获取给定包中所有通知的数组
  • Notify::all()获取所有通知的数组,无论它们的包是什么
  • Notify::bags() 获取所有带通知的包数组

要输出通知,只需简单调用

@include('laravel-notifications::notification')

请确保要输出的通知存储在变量 $notification 中。如果不是,可以使用以下代码代替

@include('laravel-notifications::notification', ['notification' => $notification_variable])

建议将通知包含在指定包的 <div> 中,以便 jQuery 插件可以添加任何动态通知。要创建此 <div>,在输出包的通知之前调用 Notify::open('bag'),之后调用 Notify::close()

方法 Notify::renderBag('bag') 实际上是以下操作的快捷方式

{!! Notify::open('bag') !!}

@foreach(Notify::get('bag') as $notification)  
  @include('laravel-notifications::notification')  
@endforeach

{!! Notify::close() !!}

动态创建通知

如果您想在页面加载后动态创建通知,简单使用 jQuery 插件

$.notify({
  level: 'info',
  message: 'This is a dynamic info notification',
  title: 'Created dynamically',
  bag: 'bag'
});

titlebag 属性是可选的。

您还可以传递一个包含要设置的属性的对象

$.notify({
  level: 'info',
  message: 'This is a dynamic info notification',
  attributes: {
    id: 'amazing-notification'
  },
});

要修改通知的类型,传递

  • permanent: true 以使它需要用户手动删除
  • close: false 以使它不能被用户删除

许可证

本软件包受 GNU 通用公共许可证第 3 版保护。有关更多信息,请参阅 许可证文件