How to make multiply select box from entity in a form in Symfony 2 -


i'm working on form in symfony 2. form projects , each of project can artistic, technic or both categorie of project. @ first, tried doing select, butt allow me choose 1 of 2 categories.

than tough generate select box each categories in entity. way, choose categories want.

-now, how do that? -i checkbox selected when pass project form (if project techic project, technic checkbox selected)... don't if form take care of itself.

here form:

    <?php      namespace adminbundle\form\type;      use symfony\component\form\abstracttype;     use symfony\component\form\formbuilderinterface;     use symfony\component\optionsresolver\optionsresolver;      class projettype extends abstracttype     {          public function buildform(formbuilderinterface $constructeur, array $options)         {             $constructeur             ->add('image', 'text')             ->add('technologie', 'text')             ->add('annee', 'text', array('label'=>'année'))             ->add('type', 'entity', [                 'class'=>'publicbundle\entity\type',                 'property'=>'nom',                 'required'=>true,             ])             ->add('fichier', 'text')             ->add('largeur', 'text')             ->add('hauteur', 'text')             //what had before                         /*->add('categories', 'entity', [                 'label'=>'catégorie',                 'class'=>'publicbundle\entity\categorie',                 'property'=>'tag',                 'required'=>true,             ])*/             ;         }          public function configureoptions(optionsresolver $resolver)         {             $resolver->setdefaults(array(                 'data_class' => 'adminbundle\entity\projet',             ));         }          public function getname()         {              return 'projet';          }      } 

my project entity:

<?php  namespace publicbundle\entity;  use doctrine\common\collections\arraycollection; use doctrine\orm\mapping orm;  /**  * projet  *  * @orm\table(name="pt_projet");  * @orm\entity  * @orm\entity(repositoryclass="publicbundle\entity\projetdepot")  */ class projet {      /**      * @orm\column(name="id", type="integer")      * @orm\id      * @orm\generatedvalue(strategy="auto")      */     //id du projet     protected $id;       /**      * @orm\onetomany(targetentity="projetint", mappedby="projet", orphanremoval=true)      */     protected $descriptions;      /**      * @orm\column(name="pro_img", type="string", length=64, unique=true)      */     //nom du fichier de l'image du projet     protected $image;      /**      * @orm\column(name="pro_technologie_utilisee", type="text", length=200)      */     //text qui liste tout les technologies utilisées pour le projet     protected $technologie;      /**      * @orm\column(name="pro_annee", type="integer", length=4)      */     //année de réalisation du projet     protected $annee;      /**      * @orm\manytoone(targetentity="type", inversedby="projets")      * @orm\joincolumn(name="pro_type", referencedcolumnname="id", nullable=false)      */     //clef étrangère du type de projet     //le type de projet ne correspond pas à la catégore. il peu être unity, flash, image, vidéo, etc. il permet de savoir quelle page charger pour pouvoir intégrer le projet dans le portfolio.     protected $type;      /**      * @orm\column(name="pro_fichier", type="string", length=64, unique=true)      */     //nom du fichier du projet     private $fichier;      /**      * @orm\column(name="pro_largeur", type="integer")      */     //largeur du projet     protected $largeur;      /**      * @orm\column(name="pro_hauteur", type="integer")      */     //hauteur du projet     protected $hauteur;      /**     * @orm\manytomany(targetentity="categorie", cascade={"persist"})     */     //la ou les catégories du projet     private $categories;      /**      * constructor      */     public function __construct()     {         $this->descriptions=new arraycollection();         $this->categories=new arraycollection();     }       /**      * id      *      * @return integer       */     public function getid()     {         return $this->id;     }      /**      * set image      *      * @param string $image      * @return projet      */     public function setimage($image)     {         $this->image = $image;          return $this;     }      /**      * image      *      * @return string       */     public function getimage()     {         return $this->image;     }      /**      * set technologie      *      * @param string $technologie      * @return projet      */     public function settechnologie($technologie)     {         $this->technologie = $technologie;          return $this;     }      /**      * technologie      *      * @return string       */     public function gettechnologie()     {         return $this->technologie;     }      /**      * set annee      *      * @param integer $annee      * @return projet      */     public function setannee($annee)     {         $this->annee = $annee;          return $this;     }      /**      * annee      *      * @return integer       */     public function getannee()     {         return $this->annee;     }      /**      * set fichier      *      * @param string $fichier      * @return projet      */     public function setfichier($fichier)     {         $this->fichier = $fichier;          return $this;     }      /**      * fichier      *      * @return string       */     public function getfichier()     {         return $this->fichier;     }      /**      * set largeur      *      * @param integer $largeur      * @return projet      */     public function setlargeur($largeur)     {         $this->largeur = $largeur;          return $this;     }      /**      * largeur      *      * @return integer       */     public function getlargeur()     {         return $this->largeur;     }      /**      * set hauteur      *      * @param integer $hauteur      * @return projet      */     public function sethauteur($hauteur)     {         $this->hauteur = $hauteur;          return $this;     }      /**      * hauteur      *      * @return integer       */     public function gethauteur()     {         return $this->hauteur;     }      /**      * add descriptions      *      * @param \publicbundle\entity\projetint $descriptions      * @return projet      */     public function adddescription(\publicbundle\entity\projetint $descriptions)     {         $this->descriptions[] = $descriptions;          return $this;     }      /**      * remove descriptions      *      * @param \publicbundle\entity\projetint $descriptions      */     public function removedescription(\publicbundle\entity\projetint $descriptions)     {         $this->descriptions->removeelement($descriptions);     }      /**      * descriptions      *      * @return \doctrine\common\collections\collection       */     public function getdescriptions()     {         return $this->descriptions;     }      /**      * set type      *      * @param \publicbundle\entity\type $type      * @return projet      */     public function settype(\publicbundle\entity\type $type)     {         $this->type = $type;          return $this;     }      /**      * type      *      * @return \publicbundle\entity\type       */     public function gettype()     {         return $this->type;     }      /**      * add categories      *      * @param \publicbundle\entity\categorie $categories      * @return projet      */     public function addcategory(\publicbundle\entity\categorie $categories)     {         $this->categories[] = $categories;          return $this;     }      /**      * remove categories      *      * @param \publicbundle\entity\categorie $categories      */     public function removecategory(\publicbundle\entity\categorie $categories)     {         $this->categories->removeelement($categories);     }      /**      * categories      *      * @return \doctrine\common\collections\collection       */     public function getcategories()     {         return $this->categories;     } } 

category entity:

<?php  namespace publicbundle\entity;  use doctrine\orm\mapping orm;  /**  * catégorie  *  * @orm\table(name="pt_categorie");  * @orm\entity  * @orm\entity(repositoryclass="publicbundle\entity\categoriedepot")  */ class categorie {      /**      * @orm\column(name="id", type="integer")      * @orm\id      * @orm\generatedvalue(strategy="auto")      */     //id de la catégorie     protected $id;      /**      * @orm\column(name="cat_tag", type="string",length=255, unique=true)      */     //tag de la catégorie     protected $tag;       /**      * id      *      * @return integer       */     public function getid()     {         return $this->id;     }      /**      * set tag      *      * @param string $tag      * @return categorie      */     public function settag($tag)     {         $this->tag = $tag;          return $this;     }      /**      * tag      *      * @return string       */     public function gettag()     {         return $this->tag;     } } 

use multiple , expanded options of entity field type:

->add('categories', 'entity', [     'label'=>'catégorie',     'class'=>'publicbundle\entity\categorie',     'property'=>'tag',     'required'=>true,     'multiple'=>true,     'expanded'=>true, ]) 

documentation on topic: http://symfony.com/doc/current/reference/forms/types/choice.html#select-tag-checkboxes-or-radio-buttons


Comments

Popular posts from this blog

javascript - Using jquery append to add option values into a select element not working -

Android soft keyboard reverts to default keyboard on orientation change -

Rendering JButton to get the JCheckBox behavior in a JTable by using images does not update my table -