表单的视图数据应该是标量,数组或\ ArrayAccess的实例,但是类TA \ ManagerBundle \ Entity \ TaReservation的实例。您可以通过将“data_class”选项设置为“TA \ ManagerBundle \ Entity \ TaReservation”或添加视图转换器来将类TA \ ManagerBundle \ Entity \ TaReservation的实例转换为标量,数组或实例来避免此错误ArrayAccess接口。
TaReservation有TaReservationType,其中有两个集合:
->add('topay', 'collection', array(
'required' => false,
'type' => new TaTopayType(),
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
'options' => array('data_class' => 'TA\ManagerBundle\Entity\TaTopay'),
->add('client', 'collection', array(
'required' => false,
'type' => new TaClientType(),
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
'options' => array('data_class' => 'TA\ManagerBundle\Entity\TaClient'),
删除该集合后,或更改
$entity = $em->getRepository('TA\ManagerBundle\Entity\TaReservation')->find($id);
到
$entity = new TaReservation();
一切正常 - 没有编辑字段内的数据。谁能告诉我如何修复它?
答案 0 :(得分:1)
[解决]
我发现,其中一个集合有一个隐藏字段,其中包含预留ID;)删除它解决了问题。
答案 1 :(得分:0)
“collection”表单字段没有“data_class”选项,我不知道你从哪里得到它。
检查表单类中是否有定义数据类的getDefaultOptions()方法,如下例所示:
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'Acme\DemoBundle\Entity\EntityName',
);
}