以下错误消息:
表单的视图数据应该是标量,数组或类型 \ ArrayAccess的实例,但是是类的实例 Proxies__CG __ \ XXX \ YYYBundle \实体\ XXXGeo。你可以避免 通过将“data_class”选项设置为此错误 “Proxies__CG __ \ XXX \ YYYBundle \ Entity \ XXXGeo”或通过添加 转换类实例的视图转换器 代理_CG __ \ XXX \ YYYBundle \ Entity \ XXXGeo到标量, 数组或\ ArrayAccess的实例。
字段XXXGeo是嵌入式表单:
->add('geo',
new XXXGeoType(),
array(
'required' => true
)
这里的代码:
class XXXGeoType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('address')
->add('city','text', array('data' => 'Somecity'))
->add('zip')
;
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'XXX\YYYBundle\Entity\XXXGeo',
);
}
public function getName()
{
return 'xxx_yyybundle_xxxgeotype';
}
}
答案 0 :(得分:1)
您需要更改getDefaultOptions
方法,该方法不再用于传递默认选项。将其替换为setDefaultOptions
:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'XXX\YYYBundle\Entity\XXXGeo'
));
}