Reputation: 8697
I've a form collection
and would like to set field2
after submitting the form, depending on the value of field1
. field2
is not editable in the form, but required.
I tried every FormEvent
(FormEvents::) but getting the error:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'field2' cannot be null
// AppBundle/Form/MyFormType.php
// ...
$builder->addEventListener(FormEvents::POST_SUBMIT, function(FormEvent $even) {
$data = $event->getData();
$form = $event->getForm();
if (isset($data['field1'])) { // isset
$field2 = $this->container->get('repository')->find($data['field1'])->getValue(); // service works
$data['field2'] = $field2; // !!! doesn't work !!!
$data->setField2($field2); // !!! doesn't work !!!
}
});
What am I doing wrong? Thanks in advance!
Upvotes: 5
Views: 10272
Reputation: 2891
try this instead
use Symfony\Component\Form\FormEvents;
$builder->addEventListener(FormEvents::PRE_SUBMIT, function(FormEvent $event) {
$data = $event->getData();
$form = $event->getForm();
if (isset($data['field1'])) {
$field2 = $this->container->get('repository')->find($data['field1'])->getValue();
$data['field2'] = $field2;
$event->setData($data);
}
});
Upvotes: 7