bnjns / laravel-notifications
一个小型包,为Laravel 5提供显示闪存通知的简单方法。
Requires
- php: ^7.2
- graham-campbell/markdown: ^11.0
- laravel/framework: ^6.0
Requires (Dev)
- phpunit/phpunit: >= 4.0 < 9.0
- squizlabs/php_codesniffer: ^2.3||^3.4
This package is auto-updated.
Last update: 2020-05-08 01:28:53 UTC
README
此包提供了一种简单但强大地将闪存通知集成到Laravel应用程序中的方法。
此包包括创建闪存消息的服务端代码,以及与通知动态交互的客户端代码。
需求
JavaScript需要jQuery 2.x或更高版本。
默认情况下,此包使用Bootstrap和Font Awesome,尽管可以配置其他提供者。
安装
要安装,请运行以下命令之一:
$ composer require bnjns/laravel-notifications
或将其添加到您的composer.json
文件的require
部分
"bnjns/laravel-notifications": "dev-master"
设置
- 将以下内容添加到
config/app.php
文件中的providers
条目bnjns\LaravelNotifications\NotificationServiceProvider::class,
- 将以下内容添加到
aliases
条目以使用外观'Notify' => bnjns\LaravelNotifications\Facades\Notify::class,
- 运行以下命令以发布包视图
$ 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' });
title
和 bag
属性是可选的。
您还可以传递一个包含要设置的属性的对象
$.notify({ level: 'info', message: 'This is a dynamic info notification', attributes: { id: 'amazing-notification' }, });
要修改通知的类型,传递
permanent: true
以使它需要用户手动删除close: false
以使它不能被用户删除
许可证
本软件包受 GNU 通用公共许可证第 3 版保护。有关更多信息,请参阅 许可证文件。