2015-08-05 1 views
1

Obtenir ci-dessous erreur ..forme CollectionType avec des boutons radio échoue après Symfony 2.7 mise à niveau

Une exception a été levée lors du rendu d'un modèle («Les données de vue de la forme devrait être de type scalaire, tableau ou une instance de \ ArrayAccess, mais est une instance de classe Proxies__CG __ \ BLA \ MyBundle \ Entity \ TransportType Vous pouvez éviter cette erreur en définissant l'option "data_class" sur "Proxies__CG __ \ BLA \ MyBundle \ Entity \ TransportType" ou en ajoutant un transformateur de vue qui transforme une instance de classe Proxies__CG __ \ BLA \ MyBundle \ Entity \ TransportType en scalaire, tableau ou une instance de \ ArrayAccess. ") dans MyBundle: Expédition: form.html.twig à la ligne 8.

$builder->add('variables','collection', array(
      'type' => new AbcType(), 
      'options' => array(
       'required' => true, 
       ), 
      'constraints' => new NotNull())); 

AbcType.php

class AbcType extends AbstractType 
{ 
    /** 
    * Build form 
    * 
    * @param FormBuilder $builder 
    * @param array  $options 
    * 
    * @return void 
    */ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 

     $builder->add('importance', null, array('empty_value'=>false,'expanded'=>true, 
           'required'=>true,'multiple'=>false, 
           'constraints' => new NotNull())) 
      ->add('timeSpent', null, array(
           'empty_value'=>false,'expanded'=>true, 
           'required'=>true,'multiple'=>false, 
           'constraints' => new NotNull() 
           ) 
      ); 
    } 

    /** 
    * setDefaultOptions set Default values 
    * 
    * @param OptionsResolverInterface $resolver 
    */ 
    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'Demo\MyBundle\Entity\Abc' 
     )); 
    } 

    /** 
    * getName will return Form name 
    * @return string 
    */ 
    public function getName() 
    { 
     return 'demo_mybundle_abctype'; 
    } 
} 
+0

Veuillez inclure la source de la classe 'AbcType' ... –

Répondre

0

Assurez-vous de la valeur par défaut 'data_class' spécifié dans les setDefaultOptions dans la classe AbcType:

... build form ... 

/** 
* @param OptionsResolverInterface $resolver 
*/ 
public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'AbcBundle\Entity\Abc' 
    )); 
}