app->bind(SeoServiceInterface::class, SeoPageService::class); } /** * Bootstrap any application services. */ public function boot(): void { self::setObserversByModel(); self::setLocaleTime(); Model::preventLazyLoading(!app()->isProduction()); self::registerFilamentNavigationGroups(); $this->loadViewsFrom(__DIR__.'/path/to/views', 'checkpoint'); FilamentView::registerRenderHook(TablesRenderHook::TOOLBAR_REORDER_TRIGGER_AFTER, function () { (new SliderCacheService())->clearAllCacheByModel(); }); } private static function setObserversByModel() : void { Page::observe(PageObserver::class); Post::observe(PostObserver::class); MainSection::observe(MainSectionObserver::class); SubSection::observe(SubSectionObserver::class); Slide::observe(SlideObserver::class); AcademicJournal::observe(AcademicJournalObserver::class); AdditionalEducation::observe(AdditionalEducationObserver::class); Department::observe(DepartmentObserver::class); Division::observe(DivisionObserver::class); Event::observe(EventObserver::class); Faculty::observe(FacultyObserver::class); User::observe(UserObserver::class); EducationalProgram::observe(EducationalProgramObserver::class); Schedule::observe(ScheduleObserver::class); ContactWidget::observe(ContactWidgetObserver::class); PageReferenceList::observe(PageReferenceListObserver::class); AdmissionPlan::observe(AdmissionCampaignObserver::class); AdmissionCampaign::observe(AdmissionCampaignObserver::class); DirectionStudy::observe(AdmissionCampaignObserver::class); } private static function setLocaleTime() : void { setlocale(LC_TIME, 'ru_RU.UTF-8'); Carbon::setLocale(config('app.locale')); } private static function registerFilamentNavigationGroups(): void { Filament::registerNavigationGroups([ 'Виджеты', 'Новости и мероприятия', 'Структура приложения', 'Структура института', 'Образование', 'Расписание и группы', 'Наука', 'Settings', ]); } }