Symfony 3:提交表单后设置值
Symfony 3: set value after submitting a form
我有一个 form collection
并想在提交表单后设置 field2
,具体取决于 field1
的值。 field2
在表单中不可编辑,但必需。
我尝试了每个 FormEvent
(FormEvents::) 但出现错误:
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 !!!
}
});
我做错了什么?提前致谢!
试试这个
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);
}
});
我有一个 form collection
并想在提交表单后设置 field2
,具体取决于 field1
的值。 field2
在表单中不可编辑,但必需。
我尝试了每个 FormEvent
(FormEvents::) 但出现错误:
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 !!!
}
});
我做错了什么?提前致谢!
试试这个
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);
}
});