|
9 | 9 | use Symfony\Component\Form\Extension\Core\Type\TextType; |
10 | 10 | use Symfony\Component\Form\FormBuilderInterface; |
11 | 11 | use Symfony\Component\OptionsResolver\OptionsResolver; |
| 12 | +use Symfony\Component\Validator\Constraints\NotBlank; |
| 13 | +use Symfony\Component\Validator\Constraints\NotNull; |
12 | 14 |
|
13 | 15 | class DocumentEmbedType extends AbstractType |
14 | 16 | { |
15 | 17 | #[\Override] |
16 | 18 | public function buildForm(FormBuilderInterface $builder, array $options): void |
17 | 19 | { |
18 | | - $services = []; |
19 | | - foreach (array_keys($options['document_platforms']) as $value) { |
20 | | - $value = (string) $value; |
21 | | - $services[ucwords($value)] = $value; |
22 | | - } |
| 20 | + if (isset($options['document_platforms'])) { |
| 21 | + $services = []; |
| 22 | + foreach (array_keys($options['document_platforms']) as $value) { |
| 23 | + $value = (string) $value; |
| 24 | + $services[ucwords($value)] = $value; |
| 25 | + } |
23 | 26 |
|
24 | | - $builder |
25 | | - ->add('embedId', TextType::class, [ |
26 | | - 'label' => 'document.embedId', |
27 | | - 'required' => true, |
28 | | - ]) |
29 | | - ->add('embedPlatform', ChoiceType::class, [ |
30 | | - 'label' => 'document.platform', |
31 | | - 'required' => true, |
32 | | - 'choices' => $services, |
33 | | - 'placeholder' => 'document.no_embed_platform', |
34 | | - ]) |
35 | | - ; |
36 | | - if (false === $options['required']) { |
37 | | - $builder->get('embedId')->setRequired(false); |
38 | | - $builder->get('embedPlatform')->setRequired(false); |
| 27 | + $builder |
| 28 | + ->add('embedId', TextType::class, [ |
| 29 | + 'label' => 'document.embedId', |
| 30 | + 'required' => true, |
| 31 | + ]) |
| 32 | + ->add('embedPlatform', ChoiceType::class, [ |
| 33 | + 'label' => 'document.platform', |
| 34 | + 'required' => true, |
| 35 | + 'choices' => $services, |
| 36 | + 'placeholder' => 'document.no_embed_platform', |
| 37 | + ]) |
| 38 | + ; |
| 39 | + if (false === $options['required']) { |
| 40 | + $builder->get('embedId')->setRequired(false); |
| 41 | + $builder->get('embedPlatform')->setRequired(false); |
| 42 | + } |
| 43 | + } else { |
| 44 | + $builder |
| 45 | + ->add('embedUrl', TextType::class, [ |
| 46 | + 'label' => 'document.embedUrl', |
| 47 | + 'help' => 'document.embedUrl.help', |
| 48 | + 'required' => true, |
| 49 | + 'constraints' => [ |
| 50 | + new NotNull(), |
| 51 | + new NotBlank(), |
| 52 | + ], |
| 53 | + ]) |
| 54 | + ; |
| 55 | + $builder->get('embedUrl')->setRequired(false); |
39 | 56 | } |
40 | 57 | } |
41 | 58 |
|
42 | 59 | #[\Override] |
43 | 60 | public function configureOptions(OptionsResolver $resolver): void |
44 | 61 | { |
45 | 62 | $resolver->setDefault('required', true); |
46 | | - $resolver->setRequired('document_platforms'); |
47 | | - $resolver->setAllowedTypes('document_platforms', ['array']); |
| 63 | + $resolver->setDefault('document_platforms', null); |
| 64 | + $resolver->setAllowedTypes('document_platforms', ['array', 'null']); |
48 | 65 | } |
49 | 66 |
|
50 | 67 | #[\Override] |
|
0 commit comments