add('notSeenSince', DateType::class, [ 'label' => 'bulk_oust_not_seen_since_header', 'widget' => 'single_text', 'input' => 'datetime_immutable', 'constraints' => [new NotNull()], ]) ->add('reason', TextType::class, [ 'label' => 'ousted_reason_header', 'constraints' => [new NotBlank(), new Length(max: 255)], ]); if ($confirm) { $builder ->add('selection', HiddenType::class, ['constraints' => [new NotBlank()]]) ->add('save', SubmitType::class, ['label' => 'bulk_oust_action_oust', 'attr' => ['class' => 'btn-error']]); } else { $builder->add('preview', SubmitType::class, ['label' => 'bulk_oust_action_preview']); } } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults(['confirm' => false]); $resolver->setAllowedTypes('confirm', 'bool'); $resolver->setNormalizer('method', static fn($options): string => $options['confirm'] ? 'POST' : 'GET'); $resolver->setNormalizer('csrf_protection', static fn($options, $value): bool => $options['confirm'] && $value); } }