Partage
  • Partager sur Facebook
  • Partager sur Twitter

checkbox multiple en base de donnée Symfony 3

Sujet résolu
    16 février 2018 à 23:41:23

    Bonjour,

    Je dois faire un site pour un ami, j'ai opter pour symfony cependant je débute vraiment sur ce framework, il a besoin que je lui récupères la valeur sélectionner par une checkbox.

    Jusque là tout marche bien, mais il a besoin que je puisse récupérer plusieurs valeurs et quand je renomme la valeur :

    'multiple' => false, 

    à

    'multiple' => true,

    Les problèmes commencent j'obtiens l'érreur :

    Unable to transform value for property path "reg": Expected an array.

    L'érreur vous paraîtra probablement stupide à vous, mais a moi cela fais Trois heures que je cherches divers solution qui n'ont fais qu’engendrez de nouveau problème sans arriver a terme à ce que je souhaiter.

    J'ai tenter de faire un EntityType (en ajoutant les dépendances adéquates) mais cela n'a pas fonctionner non plus.

    Là si je comprend bien l'érreur il n'arrive pas a transformer la valeur retourner "reg" en 'tableau' hmm ok mais je vois pas du tout comment je pourrais remédier a cela :/,

    Voici mon Controlleur

    <?php
    
    namespace AO\UserBundle\Form;
    
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\Form\Extension\Core\Type\BirthdayType;
    use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
    
    class ProfilType extends AbstractType
    {
        /**
         * {@inheritdoc}
         */
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            parent::buildForm($builder, $options);
            $builder
                    
                ->add('reg', ChoiceType::class, array(
                    'choices' => array(
                        'test1' => 'test1',
                        'test2' => 'test2',
                        'test3' => 'test3',
                        'test4' => 'test4',
                        'test5' => 'test5',
                        'test6' => 'test6',
                        'test7' => 'test7'),
                    'choices_as_values' => true, 'multiple' => true, 'expanded' => true
                        ))
            ;
            
        }/**
         * {@inheritdoc}
         */
    
        public function getParent()
        {
            return 'FOS\UserBundle\Form\Type\ProfileFormType';
        }
    
        /**
         * {@inheritdoc}
         */
        public function getBlockPrefix()
        {
            return 'ao_user_profil';
        }
    }
    

    Voici mon Entité

    <?php
    
    namespace AO\UserBundle\Entity;
    
    use Doctrine\ORM\Mapping as ORM;
    use FOS\UserBundle\Model\User as BaseUser;
    use Symfony\Component\Validator\Constraints as Assert;
    
    /**
     * User
     *
     * @ORM\Table(name="ao_user")
     * @ORM\Entity(repositoryClass="AO\UserBundle\Repository\UserRepository")
     */
    class User extends BaseUser
    {
        /**
         * @var int
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        protected $id;
    
        
        /**
         * @var string
         *
         * @ORM\Column(name="reg", type="string", length=255, nullable=true)
         *
         */
        private $reg; 
        
    
        /**
         * Set reg
         *
         * @param string $reg
         *
         * @return User
         */
        public function setReg($reg)
        {
            $this->reg= $reg;
    
            return $this;
        }
    
        /**
         * Get reg
         *
         * @return string
         */
        public function getReg()
        {
            return $this->reg;
        }
    
    
    }
    



    • Partager sur Facebook
    • Partager sur Twitter
      18 février 2018 à 10:46:46

      J'ai essayer de m'y prendre autrement en faisant un CollectionType

      Maintenant je n'ai plus d'érreur mais mon formulaire n'affiche que le "label"

      Le controlleur donne maintenant :

                  ->add('reg', CollectionType::class, array(
                          'entry_type'   => ChoiceType::class,
                          'entry_options'  => array(
                              'choices'  => array(
                                  'Test' => 'test',
                                  'Test1' => 'test1',
                                  'Test2' => 'test2'
                                  ),
                              ),
                          ))

      Dans twig j'ai :

      {{ form_row(form.reg) }}


      Cela dit comme préciser plus haut j'obtiens aucune erreur mais seul le "label" s'affiiche :/

      Je me plante a un moment c'est obligé mais je ne vois pas où




      ------------------------------------------------------------

      EDIT j'ai résolu mon problème voici mon code si quelqu'un a envie de mettre en place une checkbox multiple facilement vue qu'il y a peu de chose précise et clair à ce sujet j'espère que ça vous aideras a ne pas perdre autant de temps que j'en est perdu là dessus ^^ :

      Dans mon ProfilType.php

                  
      <?php
       
      namespace AO\UserBundle\Form;
       
      use Symfony\Component\Form\AbstractType;
      use Symfony\Component\Form\FormBuilderInterface;
      use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
       
      class ProfilType extends AbstractType
      {
          const CHOIX1 = 'choix 1';
          const CHOIX2 = 'choix 2';
          const CHOIX3 = 'choix 3';
          /**
           * {@inheritdoc}
           */
          public function buildForm(FormBuilderInterface $builder, array $options)
          {
              parent::buildForm($builder, $options);
              $builder
                       
                  ->add('maCheckbox', ChoiceType::class, [
                      'choices'  => [
                          'Choix 1' => self::CHOIX1,
                          'Choix 2' => self::CHOIX2,
                          'Choix 3' => self::CHOIX3,
                          ],
                      'expanded'  => true,
                      'multiple'  => true,
                  ])
              ;
               
          }/**
           * {@inheritdoc}
           */
       
          public function getParent()
          {
              return 'FOS\UserBundle\Form\Type\ProfileFormType';
          }
       
          /**
           * {@inheritdoc}
           */
          public function getBlockPrefix()
          {
              return 'ao_user_profil';
          }
      }



      Et mon entité User.php

          /**
           * @var array
           *
           * @ORM\Column(name="macolonne", type="array", nullable=true)
           *
           */
          private $maCheckbox; 



      -
      Edité par KiDKiLLeR 8 mars 2018 à 3:35:12

      • Partager sur Facebook
      • Partager sur Twitter

      checkbox multiple en base de donnée Symfony 3

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown