configRepository = $configRepository; $this->translatableStringHelper = $translatableStringHelper; } public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('type', ChoiceType::class, [ 'choices' => $this->getTypes(), 'placeholder' => 'Choose a resource type', 'label' => 'Resource element type' ]) ->add('amount', MoneyType::class) ->add('comment', TextAreaType::class, [ 'required' => false ]) ; if ($options['show_start_date']) { $builder->add('startDate', ChillDateType::class, [ 'label' => 'Start of validity period' ]); } if ($options['show_end_date']) { $builder->add('endDate', ChillDateType::class, [ 'required' => false, 'label' => 'End of validity period' ]); } } private function getTypes() { $resources = $this->configRepository ->getResourcesLabels(); // rewrite labels to filter in language foreach ($resources as $key => $labels) { $resources[$key] = $this->translatableStringHelper->localize($labels); } asort($resources); return \array_flip($resources); } /** * {@inheritdoc} */ public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'data_class' => Resource::class, 'show_start_date' => true, 'show_end_date' => true )); $resolver ->setAllowedTypes('show_start_date', 'boolean') ->setAllowedTypes('show_end_date', 'boolean') ; } /** * {@inheritdoc} */ public function getBlockPrefix() { return 'chill_amli_budgetbundle_resource'; } }