2014-01-18 62 views
1

以下錯誤消息後中斷:形式更新Symfony2中從2.1至2.3

表單的視圖數據的類型應爲標量,數組或\了ArrayAccess的 實例的,但是 類的一個實例Proxies__CG __ \ XXX \ YYYBundle \實體\ XXXGeo。您可以通過「data_class」選項設置爲 避免 這個錯誤「Proxies__CG __ \ XXX \ YYYBundle \實體\ XXXGeo」或通過添加 該轉換 Proxies__CG __ \ XXX \ YYYBundle \實體\ 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'; 
    } 
} 
+1

你知道在2.1和2.3之間有很多BC斷點?查看symfony軟件包根目錄中的UPGRADE-2.2和UPGRADE-2.3文件,並相應地更新您的代碼。然後,檢查問題是否仍然存在。 –

回答

1

您需要更改getDefaultOptions方法,它不再被用於傳遞默認選項。用setDefaultOptions代替:

public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'XXX\YYYBundle\Entity\XXXGeo' 
    )); 
}