addChoiceField($builder, 'language', CountryLanguages::asSelectOptions()); $this->addChoiceField($builder, 'quality', QualityList::asSelectOptions()); $this->addChoiceField($builder, 'provider', ProviderList::asSelectOptions()); $this->addChoiceField($builder, 'resolution', $this->getPreferenceChoices('resolution')); $this->addChoiceField($builder, 'codec', $this->getPreferenceChoices('codec')); } private function addChoiceField(FormBuilderInterface $builder, string $fieldName, array $choices): void { $question = [ 'attr' => ['class' => 'w-64 text-input mb-4'], 'label_attr' => ['class' => 'w-64 text-white block font-semibold mb-2'], 'choices' => $this->addDefaultChoice($choices), 'required' => false, ]; $builder->add($fieldName, ChoiceType::class, $question); } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([]); } private function getPreferenceChoices(string $preference): array { $options = $this->preferenceOptionRepository->findBy(['preference' => $preference]); $result = []; foreach ($options as $item) { $result[$item->getName()] = $item->getId(); } return $result; } private function addDefaultChoice(array $choices): iterable { return ['n/a' => ''] + $choices; } }