spatie/laravel-flash

一个用于发送提示消息的轻量级包

1.10.0 2024-02-27 15:18 UTC

This package is auto-updated.

Last update: 2024-08-27 16:29:46 UTC


README

Latest Version on Packagist run-tests Total Downloads

这是一个在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');

最可能的情况是您想在视图中使用提示消息。您可以在视图中使用 messageclasslevel 属性。

@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'

您还可以通过使用 macroflash 添加方法。

以下是一个示例

// 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)。请参阅 许可证文件 了解更多信息。