Основы
По умолчанию MoonShine использует Laravel Database Notification, но мы используем абстракции, которые легко заменить.
Если есть необходимость добавить уведомления в центр уведомлений MoonShine, используйте класс MoonShine\Laravel\Notifications\MoonShineNotification
.
Напрямую через статически метод send()
:
use MoonShine\Laravel\Notifications\MoonShineNotification;use MoonShine\Laravel\Notifications\NotificationButton;use MoonShine\Support\Enums\Color; MoonShineNotification::send( message: 'Текст уведомления', // Необязательная кнопка button: new NotificationButton('Нажми меня', '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();
Компонент
Для вывода уведомлений используется компонент MoonShine\Laravel\Components\Layout\Notifications
, который вы можете заменить на свой через Layout.
Кастомные уведомления
MoonShine гибкий и всё в нем можно заменить на собственные реализации, для уведомлений нужно реализовать интерфейсы:
MoonShine\Laravel\Contracts\Notifications\MoonShineNotificationContract
MoonShine\Laravel\Contracts\Notifications\NotificationItemContract
MoonShine\Laravel\Contracts\Notifications\NotificationButtonContract
(опционально)
После в ServiceProvider заменить реализацию на собственную:
public function boot(): void{ $this->app->singleton( MoonShineNotificationContract::class, MyNotificationSystem::class );}
WebSocket
Готовая реализация уведомлений через WebSocket реализована в пакете Rush.