我可以使用数据转换器来组合symfony2中的表单中的字段

时间:2013-11-19 23:42:14

标签: database forms symfony doctrine-orm

是否可以使用数据转换器将表单中的(n)个字段合并为一个可持久字段? 如果有可能,该怎么办?该烹饪书仅提供了将一个数据转换为另一个数据的示例,但我需要能够将N个字段转换为仅一个用于持久性的字段。因此,如果我在表单中显示6个字段,则只有3个是DB表中的实际字段,第一个和第二个字段将按原样保留,但其余4个字段将存储在第三个表列中。

1 个答案:

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