/** * Handle the filters. * * @param FileTableBuilder $builder * @param FolderRepositoryInterface $folders * @param Repository $cache * @param Request $request */ public function handle(FileTableBuilder $builder, FolderRepositoryInterface $folders, Repository $cache, Request $request) { $allowed = []; $config = $cache->get('file-field_type::' . $request->route('key'), []); foreach (array_get($config, 'folders', []) as $identifier) { /* @var FolderInterface $folder */ if ($folder = $this->dispatch(new GetFolder($identifier))) { $allowed[$folder->getId()] = $folder->getName(); } } if (!$allowed) { $allowed = $folders->all()->lists('name', 'id')->all(); } $builder->setFolders($allowed)->setFilters(['folder' => ['exact' => true, 'filter' => 'select', 'options' => $allowed, 'enabled' => count($allowed) !== 1], 'name']); }