leeovery / flasher
一个Laravel包,可以将1条或多条消息闪存到会话中,能够覆盖之前或未来的消息,并限制消息只在每个会话、每小时、每天等中出现一次。
Requires
- php: >=7.0
- illuminate/contracts: ^5.3|^5.4
- illuminate/session: ^5.3|^5.4
- illuminate/support: ^5.3|^5.4
Requires (Dev)
- phpunit/phpunit: 5.*
This package is auto-updated.
Last update: 2024-09-28 01:41:02 UTC
README
一个Laravel包(>=5.3),可以将1条或多条消息闪存到会话中,能够覆盖之前或未来的消息,并限制消息只在每个会话、每小时、每天等中出现一次。
可以与其他框架结合使用,但已为Laravel会话和缓存设置好。
安装
通过Composer
$ composer require leeovery/flasher
添加包后,将ServiceProvider添加到config/app.php中的providers数组
LeeOvery\Flasher\FlasherServiceProvider::class,
您还可以发布配置文件和视图文件,根据需要进行调整
$ php artisan vendor:publish --provider="Leeovery\Flasher\FlasherServiceProvider" --tag="flasher-config"
视图
已包含一个简单的Vue / Semantic-UI实现作为视图,但您可以根据需要发布和编辑blade文件。
要使用Vue Alert组件,请将其复制到您的项目中,然后在bootstrap js文件中导入它,并使用Vue设置组件
import Vue from "vue"; import Alert from "./components/Alert.vue"; Vue.component('alert', Alert);
您还可以选择发布用于闪存消息输出的blade文件,并根据需要自定义
$ php artisan vendor:publish --provider="Leeovery\Flasher\FlasherServiceProvider" --tag="flasher-views"
用法
最简单的实现方法就是使用闪存器辅助函数。如果您向函数传递一个消息,它将只将一条信息消息作为闪存消息输出到会话中,以便在下一个请求中显示。
flasher('This is an info message);
如果您想显示不同类型的消息,可以执行以下操作
flasher()->success('This is a success message'); flasher()->error('This is an error message'); flasher()->warning('This is a warning message'); flasher()->info('This is an info message');
您还可以选择传递一个标题
flasher()->title('This is a title.') ->info('This is an info message.');
闪存当前请求
有时,特别是在中间件中,您可能希望在当前请求中显示一条消息,而不是在下一个请求中显示。您可以通过将now()方法传递给链来完成此操作
flasher()->now() ->title('This is a title.') ->info('This info message will show in this request.');
覆盖消息
如果您想在(使用now()的当前请求或下一个请求)闪存一条消息,但想确保它是唯一的闪存消息,可以包含覆盖方法,这将清除请求周期中过去或未来的任何闪存消息
flasher()->override() ->title('This is a title.') ->info('This info message will show in this request.');
如果您只想覆盖相同类型的消息,可以将false作为覆盖方法的第一个参数传递。在上面的示例中,这意味着只有信息消息将被覆盖,但任何其他类型的闪存消息将被允许。
如果您将false作为覆盖方法的第二个参数传递,这将允许您仅覆盖之前的消息,但允许在此消息之后闪存的任何未来消息。在某些情况下,这可能很有用。
###限制消息
您可以使用限制方法来控制闪存消息显示的频率。例如,如果您想在每个会话中提醒用户完成其个人资料一次,可以执行以下操作
flasher()->oncePerSession() ->info('You still need to complete your profile.');
此消息将只在会话中闪存一次。这意味着当他们登录时,他们将看到消息。在下一次请求时,它将不会显示。但如果他们注销(或被自动注销),当他们下次登录时,他们将再次看到它。
您可以根据其他场景使用其他类型的限制。
flasher()->oncePerDay(5) flasher()->oncePerMinute(15) flasher()->oncePerHour() flasher()->oncePerWeek(2) flasher()->oncePerMonth(2) flasher()->oncePerYear() flasher()->oncePerSession()
如您所见,您可以将整数传递给基于时间的函数,它执行您期望的操作。OncePerDay(5)将只在每5天显示一次此闪存消息。
基于时间的'oncePer'方法使用缓存来存储消息数据的哈希。它包含了一个Laravel实现,该实现使用您在config中设置的默认缓存驱动程序。
贡献
请参阅CONTRIBUTING和CONDUCT以获取详细信息。
致谢
许可证
MIT 许可协议 (MIT)。请参阅许可证文件获取更多信息。