2015-11-24 72 views
0

我想收集表格。我的磚形的定義如下:如何在Symfony2中爲表單集合正確設置'data_class'?

class ImportPaymentsType extends AbstractType 
{ 
    public function getName() 
    { 
     return 'import_payments_type'; 
    } 

    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('caisse', 'entity', array(
      'label' => null, 
      'class' => 'ACME\AppBundle\Entity\Caisse', 
      'property' => 'name', 
      'empty_value' => 'Choose an option', 
     )) 
     ->add('label', 'text', array(
      'label' => null, 
     )) 
     ->add('credit', 'number', array(
      'label' => null, 
     )); 
    } 
} 

在控制器I構建這種形式,如:

$data = array(
     'imports' => 
      array(
       'caisse' => $em->getRepository('ACMEAppBundle:Caisse')->findOneByCode('P6015C'), 
       'label' => null, 
       'credit' => null, 
      ) 
    ); 

    $importForm = $this->createFormBuilder($data) 
     ->add('imports', 'collection', array(
      'type' => new ImportPaymentsType(), 
     ))->getForm(); 

我得到的錯誤是:

表單的視圖數據有望成爲類型標量,數組或者\ ArrayAccess的實例,但是是類ACPI \ AppBundle \ Entity \ Caisse類的一個實例。 ACME \ AppBundle \ Entity \ Caisse。可以通過 避免這種錯誤設置「data_class」選項 「ACME \ AppBundleBundle \實體\儲蓄銀行」或通過添加視圖 變壓器該變換類 ACME \ AppBundleBundle \實體\儲蓄銀行的實例,以標量,數組或\ ArrayAccess的實例 。

我試圖改變ImportPaymentsType,但它沒有工作:

->add('caisse', 'entity', array(
     'label' => null, 
     'class' => 'ACME\AppBundle\Entity\Caisse', 
     'property' => 'description', 
     'empty_value' => 'Choose an option', 

     'data_class' => 'ACME\AppBundle\Entity\Caisse' 

    )) 

我該怎麼辦?請幫忙。

回答

2

'imports'應該是一個數組的數組。

嘗試:

$data = array(
    'imports' => 
     array(
      array(
       'caisse' => $em->getRepository('ACMEAppBundle:Caisse')->findOneByCode('P6015C'), 
       'label' => null, 
       'credit' => null, 
      ) 
     ) 
); 
+0

多麼愚蠢的我 – VladRia