Php Symfony 3:提交表单后设置值

Php Symfony 3:提交表单后设置值,php,symfony,symfony-forms,Php,Symfony,Symfony Forms,我有一个表单集合,我想在提交表单后设置字段2,具体取决于字段1的值字段2在表单中不可编辑,但为必填项 我尝试了每个FormEvent(FormEvents::)但是得到了错误: SQLSTATE[23000]:完整性约束冲突:1048列“field2”不能为null 我做错了什么?提前谢谢 试试这个 use Symfony\Component\Form\FormEvents; $builder->addEventListener(FormEvents::PRE_SUBMIT, funct

我有一个
表单集合
,我想在提交表单后设置
字段2
,具体取决于
字段1
的值<代码>字段2在表单中不可编辑,但为必填项

我尝试了每个
FormEvent
(FormEvents::)但是得到了错误:

SQLSTATE[23000]:完整性约束冲突:1048列“field2”不能为null

我做错了什么?提前谢谢

试试这个

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); 
    }
});

var_转储你的字段2,你能发布你的db吗table@g9m29
$field2='testvalue'也不起作用。表中的字段名为
field2
$data['field2']=$field2$数据->设置字段2($data)!如果使用POST_SUBMIT事件,则表单基础数据已转换为模型。如果$data应该是一个实体,$data['field2']=$field2肯定会导致致命错误(“对象不能用作数组”),如果我记得很清楚,您不能在POST_SUBMIT事件中修改任何表单数据。使用PRE_SUBMIT代替。这正是我需要的。非常感谢。
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); 
    }
});