通知 是一种强大的工具,可以让您保持用户对应用程序的知情和参与。它们可以用于提醒用户重要事件,例如长时间过程的完成或新消息的到达。在本指南中,我们将向您展示如何在应用程序中使用 Laravel Orchid 的通知功能。

请花一点时间查看我们提供反馈的建议,以确保您的应用程序看起来非常出色。

闪存消息

闪存通知是一种一次性消息,用户查看后会自动删除。设计用于通知用户最近发生的事件——例如数据成功保存——闪存通知提供快速简洁的反馈,而不会使界面杂乱。如果您需要保留通知数据,请考虑使用持久通知。

警告消息

要创建闪存通知,您可以使用以下代码:

use Orchid\Support\Facades\Alert;

Alert::message('欢迎登机!');

您还可以使用此代码的简短版本:

alert('您的操作已完成。');

除了显示消息,Laravel Orchid 还允许您使用不同的颜色来直观地指示通知的类型。您可以使用以下方法来实现:

Alert::info('欢迎访问我们的网站!');
Alert::success('您的消息已发送。');
Alert::error('请填写所有必填字段。');
Alert::warning('您的账户将被永久删除。');

如果您想防止在警报中自动转义数据,可以使用 withoutEscaping 方法。默认情况下,传递给警报的数据会被转义以防止 XSS 攻击。调用此方法将禁用该行为:

use Orchid\Support\Facades\Alert;

Alert::info('这是 <strong>加粗</strong> 文本。')
    ->withoutEscaping();

这将渲染消息中的 HTML 内容而不进行转义。

如果您想为通知使用自定义模板,可以使用 view 方法。此方法接受三个参数:Blade 模板的路径/名称、通知的颜色以及要传递给模板的变量数组:

use Orchid\Support\Facades\Alert;
use Orchid\Support\Color;

Alert::view('alert', Color::INFO(), [
    'name' => 'Alexandr'
]);

Blade 模板看起来像这样:

{{-- resources/views/alert.blade.php --}}

Hello <strong>{{ $name }}</strong>

Toast 消息

Toast 消息是屏幕右上角出现的小型弹出通知。它们旨在简要通知用户某个操作或事件的结果,例如任务的成功完成。Toast 消息类似于闪存通知,但外观不同,并具有一些附加功能。

要创建 Toast 消息,您可以使用以下代码:

use Orchid\Support\Facades\Toast;

Toast::warning('输入无效。请检查您的表单。');

Toast 消息的一个附加功能是能够指定消息是否应在一段时间后自动隐藏。默认情况下,Toast 消息将在几秒钟后自动隐藏,但您可以使用 persistent 方法禁用此行为:

Toast::warning('输入无效。请检查您的表单。')
    ->persistent();

要重新启用自动隐藏,只需再次调用 autoHide 方法。

您还可以使用 delay 方法指定隐藏 Toast 消息前的延迟时间(以毫秒为单位)。此方法接受一个参数,即隐藏消息前的等待毫秒数:

Toast::warning('输入无效。请检查您的表单。')
    ->delay(2000);

seconds 方法允许您设置隐藏 Toast 消息前的延迟时间,但以秒为单位。这使得配置延迟时间更加人性化:

Toast::info('您的数据已保存!')
    ->seconds(5);  // 5 秒后隐藏

如果您想防止在 Toast 中自动转义数据,可以使用 withoutEscaping 方法。默认情况下,传递给 Toast 的数据会被转义以防止 XSS 攻击。调用此方法将禁用该行为:

use Orchid\Support\Facades\Toast;

Toast::info('这是 <strong>加粗</strong> 文本。')
    ->withoutEscaping();

这将渲染消息中的 HTML 内容而不进行转义。

持久通知

持久通知不同于闪存消息,它们在查看后不会被删除,即使用户离线也可以发送给用户。它们是通知用户的绝佳方式,例如,任务管理应用程序可以通知员工新任务。

您可以通过单击应用程序导航栏中的“通知铃铛图标”来查看这些通知。如果有未读通知,将显示计数器。

在使用此功能之前,重要的是查看 Laravel 通知文档,因为它提供了有关如何使用此功能的更多详细信息和示例。

要发送通知,您只需将 DashboardMessage 实例传递给用户的 notify 方法。在继续之前,请确保您的用户模型实现了 Notifiable trait:

use Orchid\Platform\Notifications\DashboardMessage;
use Orchid\Support\Color;

$user->notify(DashboardMessage::make()
    ->title('新任务:一月报告')
    ->message('请查看任务详情和截止日期。')
    ->action('https://example.com/reports/january')
    ->type(Color::INFO)
);

您还可以使用以下 Artisan 命令创建自定义通知类:

php artisan make:notification TaskCompleted

此命令将在您的 app/Notifications 目录中创建一个新类。

要发送通知,您必须将 DashboardChannel 添加到 via 通知方法中:

use Orchid\Platform\Notifications\DashboardChannel;

public function via($notifiable)
{
    return [
        DashboardChannel::class
    ];
}

在发送通知之前,您还必须在通知类中定义一个 toDashboard 方法。此方法将接收一个 $notifiable 对象,并且必须返回一个 DashboardMessage 对象:

use Orchid\Platform\Notifications\DashboardMessage;

public function toDashboard($notifiable)
{
    return (new DashboardMessage)
        ->title('新任务:一月报告')
        ->message('请查看任务详情和截止日期。')
        ->action(url('/'));
}

通知可以通过两种方式发送:使用 Notifiable trait 中的 notify 方法或使用 Notification facade。您可以查看 Laravel 通知文档 以了解有关这两种发送通知方法的更多信息。

以下是使用 'notify’ 方法向用户发送通知的示例:

$user = User::find(1);

$user->notify(new TaskCompleted);

我们的朋友