0

私のエンティティの 1 つの編集フォームを作成しようとしています。追加フォームを正常に作成しましたが、編集ビューではまったく機能しません。エラーのみが表示されます:

フォームのビュー データは、タイプがスカラー、配列、または \ArrayAccess のインスタンスであると予想されますが、クラス TA\ManagerBundle\Entity\TaReservation のインスタンスです。「data_class」オプションを「TA\ManagerBundle\Entity\TaReservation」に設定するか、クラス TA\ManagerBundle\Entity\TaReservation のインスタンスをスカラー、配列、または \配列アクセス。

TaReservation には TaReservationType があり、次の 2 つのコレクションが含まれています。

->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

【解決済み】

コレクションの 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 に答える