Основы
По умолчанию 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');
Или через DI
:
use MoonShine\Laravel\Contracts\Notifications\MoonShineNotificationContract; public function di(MoonShineNotificationContract $notification){ $notification->notify( 'Hello' );}
Настройка
Во время установки MoonShine у вас есть возможность выбрать, хотите ли вы использовать уведомления и Database Notification
.
Кроме того, вы можете изменить эти настройки позже через конфигурацию:
'use_notifications' => true,'use_database_notifications' => true,
$config ->useNotifications() ->useDatabaseNotifications();
Компонент
Для вывода уведомлений используется компонент Notifications, который вы можете заменить на свой через Layout.
Кастомные уведомления
MoonShine гибкий и всё в нем можно заменить на собственные реализации. Для уведомлений нужно реализовать интерфейсы:
MoonShineNotificationContract
NotificationItemContract
NotificationButtonContract
(опционально)
После в ServiceProvider
заменить реализацию на собственную:
public function boot(): void{ $this->app->singleton( MoonShineNotificationContract::class, MyNotificationSystem::class );}
WebSocket
Готовая реализация уведомлений через WebSocket реализована в пакете Rush.