container->singleton(Mapping::class, function () { return new Mapping([ \Flarum\Discussion\Discussion::class => [ 'index' => 'discussions', 'searchable' => \Blomstra\Search\Searchables\Discussion::class ], CommentPost::class => [ 'index' => 'posts', 'searchable' => null, ] ]); }); $this->container->singleton(Client::class, function (Container $container) { $config = $container->make('flarum.config') ?? []; $meili = Arr::get($config, 'meili'); if (! $meili) { return null; } return new Client($meili); }); } public function boot() { /** @var Mapping $searchables */ $searchables = $this->container->get(Mapping::class); $searchables->each(function ($mapped, $model) { forward_static_call( [$model, 'observe'], Observer::class ); }); } }