大家好,我对 Symfony2 FormBuilder 有一些问题,实际上,我有一个实体用户(OneByOne)链接到一个实体地址,这似乎很简单,但是当我尝试将 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;
.......
}
链接的表单类型 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'
)
);
}
我的地址表格类型:
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'
));
}
预先感谢您的帮助!