addChoiceField($builder, 'language', CountryLanguages::asSelectOptions()); $this->addChoiceField($builder, 'quality', QualityList::asSelectOptions()); $this->addChoiceField($builder, 'provider', ProviderList::asSelectOptions()); $this->addChoiceField($builder, 'resolution', ResolutionList::asSelectOptions()); $this->addChoiceField($builder, 'codec', CodecList::asSelectOptions()); } private function addChoiceField(FormBuilderInterface $builder, string $fieldName, array $choices): void { $question = [ 'attr' => [ 'class' => 'min-w-24 text-input mb-4', 'data-result-filter-target' => $fieldName, 'data-controller' => 'symfony--ux-autocomplete--autocomplete', 'data-symfony--ux-autocomplete--autocomplete-tom-select-options-value' => '{"highlight":false}', ], 'row_attr' => [ 'class' => 'filter-label' ], 'label_attr' => ['class' => 'text-white block font-semibold mb-2'], 'choices' => $this->addDefaultChoice($choices), 'required' => false, 'multiple' => true, ]; $builder->add($fieldName, ChoiceType::class, $question); } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'action' => $this->urlGenerator->generate('app_user_media_preferences_submit'), 'attr' => [ 'class' => 'filter-items w-full p-4 bg-black/20 border-2 border-orange-500 text-md text-gray-500 dark:text-gray-50 rounded-lg', ] ]); } private function addDefaultChoice(array $choices): iterable { return ['n/a' => ''] + $choices; } }