I have a Symfony form custom type for an entity.
I want to customize the code that is executed when the form is submitted, but only for a field.
For example,
You can define your foo
field in the form as not mapped
and then add listener on the POST_SUBMIT
that will call your doSomething()
method:
$builder->add('foo', null, array('mapped' => false))
;
$builder->addEventListener(
FormEvents::POST_SUBMIT,
function(FormEvent $event) {
$entity = $event->getForm()->getData();
$entity->doSomething($event->getForm()->get('foo')->getData(), true);
}
);
It will not call $entity->setFoo($value)
. Instead it will call $entity->doSomething($value, true)
as you wished.
Check this post about DataMapper (it starts from explaining Value Objects, but link will scroll down to Data Mappers
header directly). It's very useful but missed in Symfony docs.