是否可以使用数据转换器将表单中的(n)个字段合并为一个可持久字段? 如果有可能,该怎么办?该烹饪书仅提供了将一个数据转换为另一个数据的示例,但我需要能够将N个字段转换为仅一个用于持久性的字段。因此,如果我在表单中显示6个字段,则只有3个是DB表中的实际字段,第一个和第二个字段将按原样保留,但其余4个字段将存储在第三个表列中。
答案 0 :(得分:3)
您应该通过FormEvent::POST_SUBMIT
活动来完成。
http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html
基本上是这样的:
$builder->addEventListener(FormEvents::POST_SUBMIT, function(FormEvent $event) {
$form = $event->getForm();
// entity or array
$data = $event->getData();
// get data directly from form
$concatData = $form->get('non_mapped_field1_1')->getData() . ',' . $form->get('non_mapped_field1_2')->getData();
// assumig that data is entity class
$data->setSomeField($concatData);
}
);