小编Joh*_*rba的帖子

Symfony2:表单的视图数据问题

大家好我对Symfony2 FormBuilder有一些问题,实际上,我有一个实体用户链接(OneByOne)到一个实体Adress,它似乎很简单但是当我试图将AddressType表格嵌入到UserType One我正面临这个例外:

表单的视图数据应该是Acme\Bundle\AddressBundle\Entity\Adresse类的实例,但是是Doctrine\Common\Collections\ArrayCollection类的实例.您可以通过将"data_class"选项设置为null或通过添加将Doctrine\Common\Collections\ArrayCollection类的实例转换为Acme\Bundle\AddressBundle\Entity\Adresse实例的视图转换器来避免此错误

我在这里放了一些代码(简化为可读)以使我的问题更加明显:

我的用户类(扩展了FosUserBundle的一个):

class User extends BaseUser
{
  ...

  /**
  * @ORM\OneToOne(targetEntity="Acme\bundle\AddressBundle\Entity\Address", cascade={"persist", "remove"})
  * @ORM\JoinColumn(nullable=true)
  * @Assert\Valid
  */
  public $address;

  .......

}
Run Code Online (Sandbox Code Playgroud)

链接的Form Type buildForm函数:

 public function buildForm(FormBuilderInterface $builder, array $options)
    {
        parent::buildForm($builder, $options);

        // add your custom field
        $builder->add('name','text')
                ->add('address',new AddressType(),array(

                            'data_class' => 'Acme\Bundle\AddressBundle\Entity\Address'

                    )
                );


    }
Run Code Online (Sandbox Code Playgroud)

我的地址表格类型:

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
       $builder->add('city','text')
                ->add('title','text');
    }
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
             'data_class' => 'Acme\Bundle\AddressBundle\Entity\Address'
        ));
    }
Run Code Online (Sandbox Code Playgroud)

预先感谢您的帮助!

forms symfony

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

forms ×1

symfony ×1