IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Formulaires imbriqués et EditForm


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2014
    Messages : 8
    Par défaut Formulaires imbriqués et EditForm
    Salut à tous

    J'ai fais un formulaire imbriqué qui me permet de créer un Ship et plusieurs Escales.
    Lors de la création, ça marche super. Par contre, quand je veux éditer, il me sort cette erreur :

    The form's view data is expected to be of type scalar, array or an instance of \ArrayAccess, but is an instance of class ATE\MainBundle\Entity\Ship. You can avoid this error by setting the "data_class" option to "ATE\MainBundle\Entity\Ship" or by adding a view transformer that transforms an instance of class ATE\MainBundle\Entity\Ship to scalar, array or an instance of \ArrayAccess.

    Et ce uniquement si mon Ship contient plusieurs Escales (=ShipDestination).
    Pourtant, dans mon formulaire j'ai bien l'option data_class qui vaut'ATE\MainBundle\Entity\Ship'

    Voici mon code

    ShipType

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    <?php
     
    namespace ATE\MainBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolverInterface;
     
    class ShipType extends AbstractType
    {
        /**
         * @param FormBuilderInterface $builder
         * @param array $options
         */
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('name', 'text', array('label'=>'Nom du navire',
                                        'required'=>true))
                ->add('company', 'entity',
                        array('label'=>'Compagnie',
                            'required'=>true, 'class'=>'ATEMainBundle:Company',
                            'property'=>'name'))
                ->add('dest', 'entity',
                        array('label'=>'Destination',
                            'required'=>true, 'class'=>'ATEMainBundle:Destination',
                            'property'=>'destination'))
                ->add('ets', 'date', array('label'=>'Date de départ consolidée (ETS)',
                                        'widget'=>'single_text',
                                        'format'=>'dd-MM-yyyy',
                                        'required'=>true))
                ->add('eta', 'date', array('label'=>"Date d'arrivée consolidée (ETA)",
                                        'widget'=>'single_text',
                                        'format'=>'dd-MM-yyyy',
                                        'required'=>true))
                ->add('turnoverSecurised', 'money',
                        array('label'=>"Chiffre d'affaire sécurisé",
                            'currency'=>false, 'required'=>false))
                ->add('turnover', 'money',
                        array('label'=>"Chiffre d'affaire non sécurisé",
                            'currency'=>false, 'required'=>false))
                ->add('shipDestination', 'collection',
                        array('type'=>new ShipDestinationType(),
                            'options' => array('data_class'=>'ATE\MainBundle\Entity\ShipDestination'),
                            'allow_add'=>true,
                            'allow_delete'=>true,
                            'label'=>'Escales'))
            ;
        }
     
        /**
         * @param OptionsResolverInterface $resolver
         */
        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'ATE\MainBundle\Entity\Ship'
            ));
        }
     
        /**
         * @return string
         */
        public function getName()
        {
            return 'ate_mainbundle_ship';
        }
    }
    ShipDestinationType

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    class ShipDestinationType extends AbstractType {
     
        /**
         * @param FormBuilderInterface $builder
         * @param array $options
         */
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('destination', 'entity',
                        array('label'=>'Destination',
                            'class'=>'ATEMainBundle:Destination',
                            'property'=>'destination'))
                ->add('date', 'date', array('label'=>'Date d\'escale',
                                        'widget'=>'single_text',
                                        'format'=>'dd-MM-yyyy',
                                        'required'=>true,
                                        'attr'=>array('class'=>'calendar')))
                ->add('ship', 'hidden')
            ;
        }
     
        /**
         * @param OptionsResolverInterface $resolver
         */
        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'ATE\MainBundle\Entity\ShipDestination'
            ));
        }
     
        /**
         * @return string
         */
        public function getName()
        {
            return 'ate_mainbundle_shipdestination';
        }
     
    }
    Une petite idée ??

  2. #2
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    yooo maaan rastafariiiiiiiiiiiiiiiiii,



    c'est je pense, que les données que tu fournis à ton formType ne correspond à ce qu'il attends.

    si tu fais un findOne ou findBy les données sont soit un objet ou soit un tableau d'objet
    donc vérifie de ce coté là pour faire correspondre ....


    yéééaaaaah

    il y a aussi ton entité, une propriété peut être un arraycollection ou un objet

Discussions similaires

  1. [XHTML] Formulaires imbriqués interdits ?
    Par Morgoth_fr dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 15/12/2006, 08h40
  2. 2 formulaires imbriqués
    Par harlock59 dans le forum Langage
    Réponses: 9
    Dernier message: 16/06/2006, 13h30
  3. 2 formulaires imbriqués
    Par Invité dans le forum Langage
    Réponses: 16
    Dernier message: 11/05/2006, 08h54
  4. formulaires imbriqués
    Par Nounoursonne dans le forum Langage
    Réponses: 34
    Dernier message: 18/11/2005, 14h18
  5. probleme deux formulaires imbriqués
    Par rony dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/06/2005, 18h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo