Php Symfony2嵌入式表单如何将某些表单字段的值分配给子表单字段

Php Symfony2嵌入式表单如何将某些表单字段的值分配给子表单字段,php,forms,symfony,Php,Forms,Symfony,我有实体用户和实体公司 关系是公司(一个)与用户(多个)之间的关系 当我注册成为一家公司时,我需要创建这两个对象 两个对象具有相同的属性:$phone、$firstName、$lastName (对于公司而言,这些字段是指主要联系人) 我的注册表格由两种表格组成:用户表格和嵌入式公司表格 问题:现在,当我呈现注册表单时,我有重复的字段: 为每个对象渲染的phone、firstName和lastName 是否有一种方法可以以某种方式将它们组合在一起,并仅向用户请求一次这些值,但仍然可以将它们保存到

我有实体用户和实体公司

关系是公司(一个)与用户(多个)之间的关系

当我注册成为一家公司时,我需要创建这两个对象

两个对象具有相同的属性:$phone、$firstName、$lastName (对于公司而言,这些字段是指主要联系人)

我的注册表格由两种表格组成:用户表格和嵌入式公司表格

问题:现在,当我呈现注册表单时,我有重复的字段: 为每个对象渲染的phone、firstName和lastName


是否有一种方法可以以某种方式将它们组合在一起,并仅向用户请求一次这些值,但仍然可以将它们保存到两个实体的数据库中?

我已在PRE_SUBMIT event上使用事件侦听器解决了此问题:
namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;

/**
 * Class CompanyRegFormType
 * @package AppBundle\Form
 */
class UserFormType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array                $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('firstName', 'text')
            ->add('lastName', 'text')
            ->add('phone', 'text')
            ->add('company', new CompanyFormType())
            ->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event){
                    $data = $event->getData();
                    $data['company']['phone'] = $data['phone'];
                    $data['company']['firstName'] = $data['firstName'];
                    $data['company']['lastName'] = $data['lastName'];
                    $event->setData($data);
                }
              );
    }

    /**
     * @return string
     */
    public function getName()
    {
        return 'app_user_registration';
    }

    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => 'AppBundle\Entity\User',
        ]);
    }
}