The only way I found is to add a model transformer to the form type buildForm method, as these codes are below: public function buildForm (FormBuilderInterface $ builder, array $ options) {$ transformer = new IssueToNumberTransformer ($ entityManager); $ Builder-> Add ($ builder-> create ('issue', 'text') -> addModelTransformer ($ transformer)); }
But I have a form field that displays when another form field has a valid value, so I'd rather create a form field in the FormEvent :: PRE_SET_DATA event.
1. the wrong way
->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($builder) { $order = $event->getData(); $form = $event->getForm(); $serviceType = $order->getServiceType();
someone offers
$form ->add($builder->create('address', 'hidden') ->addModelTransformer($this->addressTransformer),array( 'label' => 'vmsp_order.contact.form.address'));
unfortunalitiy, it throws this error:
The expected argument of type "string, integer or Symfony \ Component \ Form \ FormInterface", "Symfony \ Component \ Form \ FormBuilder" specified
2. another wrong way
if ($serviceType && $serviceType->getType() == ServiceType::TYPE_HOME_SERVICE) { $form ->add('address', 'hidden', array( 'label' => 'vmsp_order.contact.form.address' ) ); $form->get('address')->getConfig()->addModelTransformer($this->addressTransformer); }
error received:
FormConfigBuilder methods can no longer be accessed after creating the linker in an instance of FormConfigInterface.
I list two wrong paths above, because I find many posts saying that these methods are correct, of course, this is not so. this post is the same question as symfony2-form-events-and-model-transformers , but this answer is not the one I need, so my question is in any case adding a model transformer to the form events for a specific form field?