2014-01-18 3 views
1

следующее сообщение об ошибке:форма сломана после обновления Symfony2 от 2,1 до 2,3

просматривать данные виде, как ожидается, будет типа скаляр, массив или экземпляр \ ArrayAccess, но является экземпляром класса Proxies__CG __ \ XXX \ YYYBundle \ Entity \ XXXGeo. Вы можете избежать эту ошибку, установив опцию "data_class" в "Proxies__CG __ \ XXX \ YYYBundle \ Entity \ XXXGeo" или путем добавления вид трансформатор, который преобразует экземпляр класса Proxies__CG __ \ XXX \ YYYBundle \ Entity \ 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? Взгляните на файлы UPGRADE-2.2 и UPGRADE-2.3 в корневом каталоге Symfony и соответствующим образом обновите свой код. Затем проверьте, существует ли проблема. –

ответ

1

Вам нужно изменить getDefaultOptions метод, который больше не используется для передачи параметров по умолчанию. Заменить его на setDefaultOptions:

public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'XXX\YYYBundle\Entity\XXXGeo' 
    )); 
} 
Смежные вопросы