lukebro / flash
Laravel 5.* 中的神奇闪存通知
Requires
- php: >=5.6
- illuminate/support: 5.*|6.*
Requires (Dev)
- mockery/mockery: dev-master
- phpunit/phpunit: *
This package is not auto-updated.
Last update: 2024-09-22 07:43:59 UTC
README
一个简单的神奇 API,用于向 Laravel 5.* 的会话中闪存通知。
flash()->success('Signed in successfully.');
安装
需要 PHP 5.5.9,Laravel 5.* & 6.* 和 Composer。
将以下行添加到您的 composer.json
文件的 require 块中
"lukebro/flash": "~0.3"
运行 composer install
或 composer update
。
在 \config\app.php
中包含服务提供者
'providers': [ Lukebro\Flash\FlashServiceProvider::class, ];
在相同文件的底部添加外观别名
'aliases' => [ 'Flash' => Lukebro\Flash\FlashFacade::class ];
用法
闪存通知
在重定向之前,向屏幕闪存一条消息
flash()->warning('Max file size is 5MB.');
在您的视图中,您可以访问 flash()->level
和 flash()->message
属性。
level
属性是您调用的函数的名称,可以是任何名称。 message
属性是您传递给神奇函数的字符串。
所以,对于上面的例子,flash()->level
和 flash()->message
分别是 warning
和 Max file size is 5MB.
。
闪存消息不是必需的,只调用方法将只闪存级别。
您还可以访问一个 Flash
外观,您可以将其用作 flash()
辅助函数的替代。
闪存多个通知
您可以像这样链式调用您的闪存
flash()->warning('Max file size is 5MB.') ->warning('Username is required.') ->danger('There was an error validating your information.');
在您的视图中,flash()->level
和 flash()->message
属性将返回最后闪存的消息的级别和消息。要获取闪存的所有消息的 Collection
,您可以使用 flash()->all()
。
例如,要迭代您视图中的所有闪存消息
@foreach (flash()->all() as $flash) <div class="alert alert-{{ $flash->level }}">{{ $flash->message }}</div> @endforeach
flash()->all()
返回 Laravel 的 Collection 类,因此您可以访问 Collection 包含的所有方法,例如 groupBy()
、chunk()
、toJson()
等。它也可以简单地被视为一个数组。
检测闪存通知
要检测会话中是否存在任何闪存消息,请使用 flash()->exists()
。
如果您想检测特定的级别,请使用 has()
方法。例如,flash()->has('error')
。这对于单个或多个闪存消息都适用。
最好的做法是检测是否闪存了特定的级别,然后使用 get()
方法显示该级别的通知。
@if (flash()->has('error')) <ul class="errors"> @foreach (flash()->get('error') as $flash) <li>{{ $flash->message }}</li> @endforeach </ul> @endif
重新闪存通知
要重新闪存通知或所有通知到下一个请求,请使用 again()
函数。
flash()->again();
您可以在调用 flash()->again()
方法之前或之后闪存更多消息。
辅助函数
您也可以直接将级别和消息传递给 flash()
辅助函数。
flash('error', 'There was an error processing your request.');
单次与多次闪存
根据您的应用程序需求,设置您的视图以使用循环或仅使用属性显示闪存。例如,如果您的应用程序一次只闪存一条通知,则在您的视图中直接使用 flash()->level
和 flash()->message
是可以的。
但是,如果您的应用程序将闪存多个通知,则最好设置一个 foreach
循环并迭代 flash()->all()
。即使闪存了多个通知,您也可以直接访问 flash()->level
和 flash()->message
属性,但它们的值将是最后闪存的通知。
示例
以下是一些基本的 blade 模板/示例。
单次闪存示例
@if (flash()->exists()) <div class="alert alert-{{ flash()->level }}"> {{ flash()->message }} </div> @endif
多次闪存示例
@if (flash()->exists()) @foreach (flash()->all() as $flash) <div class="alert alert-{{ $flash->level }}"> {{ $flash->message }} </div> @endforeach @endif
检测特定级别
@if (flash()->has('success')) <script> launchFireworks(); </script> @endif
检测特定级别并显示多条消息
@if (flash()->has('error')) <ul class="errors"> @foreach (flash()->get('error') as $flash) <li>{{ $flash->message }}</li> @endforeach </ul> @endif
详细信息
数据存储在Laravel的会话中,键为flashes
,格式如下
[ 'flashes' => [ ['level' => '', 'message' => ], ['level' => '', 'message' => ] ] ]
flash()->all()
返回一个Flash对象集合。Flash对象包含两个属性:level
和message
,它们是公开可访问的。您也可以使用数组语法访问它们,例如:$flash['level']
和$flash['message']
。Flash对象具有toArray()
和toJson()
方法。
贡献
请随时创建一个issue,提出功能请求或错误报告。如果您愿意自己实现功能或修复错误,请创建一个pull request。我对这个包的发展方向还不太确定,到目前为止,我对它的现状非常满意。
贡献也可以是文档,而不仅仅是代码。如果您认为您能比我更好地解释API,请这样做,我很乐意将其合并进来。
我很乐意听听您对这个包的感受以及您不喜欢的地方。
鸣谢
这个极小包的灵感来源于Jeffrey Way的Laracast视频:[优雅的Flash消息](https://laracasts.com/series/build-project-flyer-with-me/episodes/9)。绝对值得一试。Jeffrey提到,您可以将API写成“神奇”的方式,所以我想到这是一个很酷的实现。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。