Основы
По умолчанию MoonShine использует Laravel Database Notifications, но мы используем абстракции, которые легко заменить.
Если есть необходимость добавить уведомления в центр уведомлений MoonShine, используйте класс MoonShineNotification
.
Напрямую через статически метод send()
:
use MoonShine\Laravel\Notifications\MoonShineNotification;use MoonShine\Laravel\Notifications\NotificationButton;use MoonShine\Support\Enums\Color;MoonShineNotification::send(message: 'Notification text',// Необязательная кнопкаbutton: new NotificationButton('Click me', 'https://moonshine.cutcode.dev', attributes: ['target' => '_blank']),// Необязательные ID администраторов (по умолчанию для всех)ids: [1,2,3],// Необязательный цвет иконкиcolor: Color::GREEN,// Необязательная иконкаicon: 'information-circle');
use MoonShine\Laravel\Notifications\MoonShineNotification;use MoonShine\Laravel\Notifications\NotificationButton;use MoonShine\Support\Enums\Color;MoonShineNotification::send(message: 'Notification text',// Необязательная кнопкаbutton: new NotificationButton('Click me', 'https://moonshine.cutcode.dev', attributes: ['target' => '_blank']),// Необязательные ID администраторов (по умолчанию для всех)ids: [1,2,3],// Необязательный цвет иконкиcolor: Color::GREEN,// Необязательная иконкаicon: 'information-circle');
Или через DI
:
use MoonShine\Laravel\Contracts\Notifications\MoonShineNotificationContract;public function di(MoonShineNotificationContract $notification){$notification->notify('Hello');}
use MoonShine\Laravel\Contracts\Notifications\MoonShineNotificationContract;public function di(MoonShineNotificationContract $notification){$notification->notify('Hello');}
Настройка
Во время установки MoonShine у вас есть возможность выбрать, хотите ли вы использовать уведомления и Database Notification
.
Кроме того, вы можете изменить эти настройки позже через конфигурацию:
'use_notifications' => true,'use_database_notifications' => true,
'use_notifications' => true,'use_database_notifications' => true,
$config->useNotifications()->useDatabaseNotifications();
$config->useNotifications()->useDatabaseNotifications();
Компонент
Для вывода уведомлений используется компонент Notifications, который вы можете заменить на свой через Layout.
Кастомные уведомления
MoonShine гибкий и всё в нем можно заменить на собственные реализации. Для уведомлений нужно реализовать интерфейсы:
MoonShineNotificationContract
NotificationItemContract
NotificationButtonContract
(опционально)
После в ServiceProvider
заменить реализацию на собственную:
public function boot(): void{$this->app->singleton(MoonShineNotificationContract::class,MyNotificationSystem::class);}
public function boot(): void{$this->app->singleton(MoonShineNotificationContract::class,MyNotificationSystem::class);}
WebSocket
Готовая реализация уведомлений через WebSocket реализована в пакете Rush.