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

Rey*_*eon 3 database forms symfony doctrine-orm

是否可以使用数据转换器将表单中的 (n) 个字段合并为一个可持久化的字段?如果可能,该怎么做?菜谱仅给出了将一段数据转换为另一种类型的示例,但我需要能够将 N 个字段转储为一个字段以进行持久化。因此,如果我在表单中显示 6 个字段,则 DB 表中只有 3 个是真实字段,第一个和第二个字段将按原样保留,但其余 4 个字段将存储在第三个表列中。

Jov*_*vic 6

你应该通过 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);
    }
);
Run Code Online (Sandbox Code Playgroud)