Mr. B.
Mr. B.

Reputation: 8697

Symfony 3: set value after submitting a form

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

Answers (1)

Denis Alimov
Denis Alimov

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

Related Questions