spatie / laravel-flash
一个用于发送提示消息的轻量级包
Requires
- php: ^7.4|^8.0
- illuminate/session: ^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^6.23|^7.0|^8.0|^9.0
- phpunit/phpunit: ^9.4|^10.5
README
这是一个在Laravel应用程序中发送提示消息的轻量级包。提示消息是一种通过在会话中存储来传递到下一个请求的消息。此包一次只支持一个提示消息。
以下是使用方法
class MySpecialSnowflakeController { public function store() { // … flash('My message', 'my-class'); return back(); } }
在你的视图中你可以这样做
@if (flash()->message) <div class="{{ flash()->class }}"> {{ flash()->message }} </div> @endif
支持我们
我们投入了大量资源来创建最佳开源包。你可以通过购买我们的付费产品来支持我们。
我们非常感激你从你的家乡寄给我们明信片,并说明你正在使用我们哪个包。你可以在我们的联系页面上找到我们的地址。我们将所有收到的明信片发布在我们的虚拟明信片墙上。
安装
您可以通过composer安装此包
composer require spatie/laravel-flash
用法
以下是一个发送消息的示例。
class MyController { public function store() { // … flash('My message'); return back(); } }
在你的视图中你可以这样使用它
@if(flash()->message) <div> {{ flash()->message }} </div> @endif
使用类名来设置显示消息的样式
您可以将一个类作为第二个参数添加。这通常用于在HTML中设置输出样式。
class MyController { public function store() { // … flash('My message', 'my-class'); return back(); } }
你可以在视图中这样使用类
@if (flash()->message) <div class="{{ flash()->class }}"> {{ flash()->message }} </div> @endif
您也可以设置一个类数组。这些将通过空格分隔符由 flash()->class
输出。
flash('My message', ['my-class', 'another-class']); // flash()->class output is: 'my-class another-class'
添加您自己的方法
如果您不想每次发送消息时都指定一个类,您可以向 flash
添加一个方法名。
最简单的方法是通过向 levels
方法传递一个数组。键是要添加到 flash()
的方法名。值是在渲染消息时将自动使用的类。
// this would probably go in a service provider \Spatie\Flash\Flash::levels([ 'success' => 'alert-success', 'warning' => 'alert-warning', 'error' => 'alert-error', ]);
上面的示例将使这些方法在 flash
上可用
flash()->success('Hurray'); flash()->warning('Mayybeee'); flash()->error('Oh Oh');
最可能的情况是您想在视图中使用提示消息。您可以在视图中使用 message
、class
和 level
属性。
@if (flash()->message) <div class="{{ flash()->class }}"> {{ flash()->message }} </div> @if(flash()->level === 'error') This was an error. @endif @endif
另外,当您添加了自己的方法后,您也可以将该方法名作为第二个参数传递给 flash
本身
flash('Hurray', 'success'); // `flash()->class` will output 'alert-success'
您还可以通过使用 macro
向 flash
添加方法。
以下是一个示例
// this would probably go in a service provider use Spatie\Flash\Message; \Spatie\Flash\Flash::macro('warning', function (string $message) { return $this->flashMessage(new Message($message, 'alert alert-warning')); });
现在您可以在 flash
上使用 warning
方法
flash()->warning('Look above you!');
您可以将所需的 level
作为第三个参数传递给 Message
。
// in a service provider use Spatie\Flash\Message; \Spatie\Flash\Flash::macro('warning', function (string $message) { return $this->flashMessage(new Message($message, 'alert alert-warning', 'my-level')); }); // in the next request, after having flashed a message flash()->level; // returns `my-level`
替代方案
此包旨在保持轻量级。如果您需要像多个消息、Bootstrap支持、覆盖层等功能,请查看此出色的提示包,由Jeffrey Way提供,或Laraflash,由Ilya Sakovich提供。
测试
composer test
变更日志
请参阅 变更日志 了解最近发生了哪些变化。
贡献
请参阅 贡献指南 了解详情。
安全
如果您发现有关安全性的错误,请发送邮件至 security@spatie.be 而不是使用问题跟踪器。
明信片软件
您可以使用这个包,但如果它进入了您的生产环境,我们非常感激您从家乡寄给我们一张明信片,并注明您正在使用我们的哪个包。
我们的地址是:Spatie,Kruikstraat 22,2018 安特卫普,比利时。
我们将所有收到的明信片 发布在我们的公司网站上。
鸣谢
许可证
MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。