Add a model transformer for a specific form field as events

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) { /** * @var $order \VMSP\OrderBundle\Entity\OrderInterface */ $order = $event->getData(); $form = $event->getForm(); /** * @var $serviceType \VMSP\StoreBundle\Entity\ServiceType */ $serviceType = $order->getServiceType(); //only home service needs user address if ($serviceType && $serviceType->getType() == ServiceType::TYPE_HOME_SERVICE) { //won't work $form ->add( $builder->create('address', 'hidden')->addModelTransformer($this->addressTransformer), array( 'label' => 'vmsp_order.contact.form.address', )); } } 

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?

+5
source share

All Articles