表单中包含symfony对象的字段


Form with field for a object on symfony

我有一个实体,其中包含普通变量和一个变量,该变量是对另一个对象的引用。要在symfony中构建表单,我需要发送一个对象以及我想要在表单上的字段。在这种情况下我该怎么做呢?

我的类和引用另一个类调用站点的文件:

    private $Site;
    public function getSite()
    {
        return $this->Site;
    }
    public function setSite(Site $Site)
    {
        $this->Site = $Site;
    }

我的表单代码:

    $builder
        ->add('site')
        ->add('email')
        ->add('password', RepeatedType::class, array(
            'type' => PasswordType::class,
            'first_options'  => array('label' => 'Password'),
            'second_options' => array('label' => 'Repeat Password'),
        ))
        ->add('termsAccepted', CheckboxType::class, array(
            'mapped' => false,
            'constraints' => new IsTrue(),
        ))
        ->add('registrar', SubmitType::class)
        ;

然后创建表单:

    $user = new User();
    $form = $this->createForm(RegisterType::class, $user);

我认为表单嵌入是你想要的:

http://symfony.com/doc/current/form/embedded.html

类似的问题在这里:如何包括在实体形式类型的一些字段从另一个实体?

您必须创建另一个表单类型(SiteType)作为Site实体的字段表示。然后您只需将这个新字段->add('site', SiteType::class)添加到表单构建器中。