I am dynamically modifying form as shown in official example.
I got this field previous which is being submitted via jQuery auto complete feature as user types it. When match is set correctly form should auto update itself to add new field, according to "previous" field value.
$builder->get('previous')->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) use ($formModifier) {
$previous = $event->getForm()->getData();
$formModifier($event->getForm()->getParent(), $previous);
});
$formModifier = function (FormInterface $form, $previous = null) {
if ($previous instanceof AwesomeEntity) {
$form->add('changes', new AwesomeChangesType(), array(
'data' => $previous->getLastComment('changes'),
'label' => false,
'mapped' => false
));
}
};
As you can see in line:
'data' => $previous->getLastComment('changes'),
The data is being set after submit has occurred, but it's not set, as far as I figured out: is that by default the symfony is preventing data modification after POST_SUBMIT event so the data is not set.
I don't know why, but it's probably for some good reason that this behavior is as it is. So the question would be is there any other way of setting data for needed field(s), in this situation without breaking the rules of symfony form logic?