I need to use an Event Listener since I need different things to be displayed in my form whether it is new or an already existing entity. I can manage that.
I need a Data Transformer, to display the entity as text, which is something I also can do.
=> However, I fail in doing the 2 (Data Transformer+Event Listener) at the same time. I get the error: "Error: Call to a member function add() on a non-object". If I replace $builder par $form, I get the following error: Attempted to call an undefined method named "create" of class "Symfony\Component\Form\Form".
That works:
$builder->addEventListener(FormEvents::PRE_SET_DATA, function(FormEvent $event){
$element = $event->getData();
$form = $event->getForm();
if (!$element || null === $element->getId()) { //new entity
$form->add(...);
} else { //exist already
//...
}
That also works:
$builder->add( $builder->create('element', 'text')->addModelTransformer($transformer));
But I cannot make the 2 working at the same time.
$transformer = new ElementObjToStringTransformer($this->em);
$builder->addEventListener(FormEvents::PRE_SET_DATA, function(FormEvent $event){
$element = $event->getData();
$form = $event->getForm();
if (!$element || null === $element->getId()) { //new entity
$builder->add( $builder->create('element', 'text')->addModelTransformer($transformer));
} else { //exist already
//...
}
});