0

我正在尝试为我的一个实体制作编辑表单。我已经成功创建了一个添加表单,但是在编辑视图上它根本不起作用。我只得到错误:

表单的视图数据应为标量、数组或\ArrayAccess 的实例类型,但它是类TA\ManagerBundle\Entity\TaReservation 的实例。您可以通过将“data_class”选项设置为“TA\ManagerBundle\Entity\TaReservation”或添加将 TA\ManagerBundle\Entity\TaReservation 类的实例转换为标量、数组或 \ 的实例的视图转换器来避免此错误数组访问。

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();

一切正常 - 编辑字段中没有数据。谁能告诉我如何修复它?

4

2 回答 2

1

[解决了]

我发现,其中一个集合有一个隐藏字段,其中包含预订 ID;)删除它解决了问题。

于 2013-02-17T14:36:25.343 回答
0

“集合”表单字段没有选项“data_class”,我不知道你从哪里得到的。

检查您的表单类中是否有定义数据类的 getDefaultOptions() 方法,如下例所示:

 public function getDefaultOptions(array $options)
{
    return array(
        'data_class' => 'Acme\DemoBundle\Entity\EntityName',
    );
}
于 2013-02-17T03:47:06.333 回答