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 :

Symfony2 Grouper les checkbox par Type


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Points : 29
    Points
    29
    Par défaut Symfony2 Grouper les checkbox par Type
    Bonjour tout le monde , ça fait 3 jours que je galère et finalement j'ai décidé de partager mon problème avec vous
    Ce que je cherche à faire , c'est d'afficher sous forme de checkbox l'ensemble des privilèges groupés par type
    (NB: un type contient plusieurs privilèges et un privilège appartient à un seul type )
    je suis tombée sur une ancienne discussion (http://www.developpez.net/forums/d12...nant-d-entite/) qui traite la meme problèmatique mais je bloque sur la partie qui va etre traité dans le controller et qui va envoyer le type de champs au view

    SVP aidez MOI

  2. #2
    Membre habitué Avatar de anta_res
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 93
    Points : 173
    Points
    173
    Par défaut
    Je vais essayer de te refaire la démonstration. J’espère arriver a te faire cela le plus clairement possible mais ça fait tellement longtemps que j'ai peut être zappé ou modifier des morceaux depuis.

    1- Tu appel un formulaire tout ce qu'il y a de plus simple depuis ton contrôleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $privileges= $this->getDoctrine()->getEntityManager()->getRepository('SocleCommunSuperAdminBundle:Privileges')->findByActive(true);// Exemple de requête retournant les privilèges actifs
    $PrivilegesForm = $this->createForm(new ListePrivilegeType(),$privileges);// Création du formulaire en passant la liste des privilèges actifs afin que les checkboxes correspondantes soient cochées par défaut
    2- Ton ListePrivilegeType() lui est constitué d'un champ personnalisé héritant du type de champ "entity"
    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
     
    namespace MonAppli\MonBundle\Form\GestionPrivileges;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolverInterface;
     
    class ListePrivilegeType extends AbstractType{
     
        public function buildForm(FormBuilderInterface $builder, array $options) {
            $builder
                ->add('privileges','groupprivileges',array(
                    'label'=>'Privilèges : ',
            'em' => 'MonEntityManager',
                    'class'=>'MonAppliMonBundle:Privilege',
                    'property'=>'nom',
                    'expanded'=>true,
                    'multiple'=>true,
                ));
        }
     
        public function getName(){
            return 'ListePrivilege';
        }
     
        public function setDefaultOptions(OptionsResolverInterface $resolver){
            $resolver->setDefaults(array(
                'data_class' => 'MonAppli\MonBundle\Entity\ListePrivilege',
            ));
        }
     
    }
    Le champ "privileges" hérite donc des propriétés d'un type de champ "entity" et possède comme classe l'entité 'Privilege()'.
    Ne pas oublier pour que les rôles s'affiches sous forme de checkbox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    'expanded'=>true,
    'multiple'=>true,
    A ce stade si on avait utilisé un champ "entity" classique on aurai eu une liste de checkbox dans laquelle chaque checkbox représente un privilège.
    C'est justement le type de champ personnalisé "groupprivileges" qui va permettre re-grouper les différentes checkbox par type de privilège.
    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
     
    namespace MonAppli\MonBundle\Form\Type;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormInterface;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\Form\FormView;
    use Symfony\Component\OptionsResolver\OptionsResolverInterface;
    use Symfony\Component\OptionsResolver\Options;
     
    use Doctrine\Bundle\DoctrineBundle\Registry;
     
    class GroupPivilegesType extends AbstractType{
     
        private $doctrine;
     
        public function __construct(Registry $doctrine){
            $this->doctrine = $doctrine;
        }
     
        public function setDefaultOptions(OptionsResolverInterface $resolver){
     
            $doctrine = $this->doctrine;
     
            $typesPrivilege = $doctrine->getEntityManager()->getRepository('SocleCommunSuperAdminBundle:Type')->findAll();
     
            $resolver->setDefaults(array(
                'types'           => $typesPrivilege 
            ));
        }
     
        public function buildForm(FormBuilderInterface $builder, array $options){
            $builder
                ->setAttribute('types',$options['types'])
            ;
        }
     
        public function buildView(FormView $view, FormInterface $form, array $options){
            $view->vars = array_replace($view->vars, array(
                'types'=>$form->getAttribute('types')
            ));
        }
     
        public function getParent(){
            return 'entity';
        }
     
        public function getName(){
            return 'groupprivileges';
        }
    }
    A la ligne 25 tu peux voir que je récupère la liste de mes types de privilèges. Perso je les prend dans une base mais tu peut faire comme tu veux.
    Pense bien a définir ton type de champ comme un service pour pouvoir l'utiliser dans ListePrivilegeType()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        form.type.grouprole:
            class: SocleCommun\SuperAdminBundle\Form\Type\GroupRoleType
            arguments: [@doctrine]
            tags:
                - { name: form.type, alias: grouprole }
    Ensuite tu utilise la technique de "form theming" de symfony pour modifier la façon dont va s'afficher ton type de champ perso.
    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
     
    //Affichage d'un privilège
    {% block checkbox_groupprivileges_widget %}
        <input type="checkbox" id="{{ id }}_{{ privilege.getId }}" name="{{ full_name }}[{{ privilege.getId }}]" value="{{ privilege.getId }}" {% if privilege in privilegesChecked %}checked="checked"{% endif %}/>&nbsp;
        <label for="{{ id }}_{{ privilege.getId }}">{{ privilege.getnom}}</label>
        <br />
    {% endblock checkbox_groupprivileges_widget %}
     
    //Affichage d'un groupe de privilèges
    {% block type_groupprivileges_widget %}
        <fieldset>
            <table>
                <tr>
                {% for privilege in module.getRoles %}
                    <td>{{ block('checkbox_grouprole_widget') }}</td>
                    {% if loop.index is even %}
                    </tr>
                    <tr>
                    {% endif %}
                {% endfor %}
                </tr>
            </table>
        </fieldset>
    {% endblock %}
     
    //Ce morceau de code se charge de regrouper les privilège en fonction de leur type
    {% block groupprivileges_widget %}
        {% spaceless %}
                {% set privilegesChecked=form.getParent.getVars.value.getPrivileges %}
                {% for type in types %}
                    {{ block('type_groupprivileges_widget ') }}
                {% endfor %}
        {% endspaceless %}
    {% endblock groupprivileges_widget %}
    Tu n'as plus qu'a afficher ton ListePrivilegeType() dans un twig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        <form method="post" {{ form_enctype(form) }} novalidate="novalidate">
            {{ form_row(form.privileges) }}
            {{ form_rest(form) }}
            <input type="submit" />
        </form>

    Voila j’espère que j'aurai pu t'aider avec ces quelques explications.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Points : 29
    Points
    29
    Par défaut SYMFONY2 GROUP CHECKBOX
    Bonjour Mr Julien , Tout d'abord je te remercie pour le temps que tu m'as consacré et pour tes explications bien détaillées
    J'ai bien suivi ta démarche pas à pas, Meme si j'ai pas bien compris le fonctionnement de GroupPrivilegesType Mais je suis tombée sur une erreur :
    The form's view data is expected to be an instance of class Geo\UserBundle\Entity\Type, but is a(n) array. You can avoid this error by setting the "data_class" option to null or by adding a view transformer that transforms a(n) array to an instance of Geo\UserBundle\Entity\Type.

    Autre chose avant de vous montrer le code , selon le code que tu m'as filé , on envoi une liste de privilège au type formulaire ListPrivilegesType qui est associé au classe Type donc deux classes différentes est ce que t'es sures de ton code ?
    Voici mon code :

    Entity Type:
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    <?php
     
    namespace Geo\UserBundle\Entity;
     
    use Symfony\Component\Validator\Constraints as Assert;
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
     
    /**
     * Type
     *
     * @ORM\Table(name="type")
     * @ORM\Entity
     * @UniqueEntity(fields={"nom"})
     */
    class Type
    {
     
        /**
         * @var integer
         *
         * @ORM\Column(name="type", type="integer", length=20)
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="IDENTITY")
         */
        private $id;
     
         /**
         * @var ArrayCollection $privileges
         *
         * @ORM\OneToMany(targetEntity="Privilege", mappedBy="type")
         */
        private $privileges;
     
     
     
        /**
         * @var string
         *
         * @ORM\Column(name="nom", type="string", length=30, nullable=false)
         */
        private $nom;
     
     
     
        public function __construct()
        {   
           $this->privileges = new \Doctrine\Common\Collections\ArrayCollection();
        }
     
        /**
         * Set nom
         *
         * @param string $nom
         * @return Type
         */
        public function setNom($nom)
        {
            $this->nom = $nom;
     
            return $this;
        }
     
     
     
         /**
         * @return ArrayCollection $privileges
         */
        public function getPrivileges() {
            return $this->privileges;
        }
     
         /**
         * Set id
         * @param integer $id
         * @return Type
         */
        public function setId($id)
        {
            $this->id = $id;
     
            return $this;
        }
     
     
        /**
         * Get nom
         *
         * @return string 
         */
        public function getNom()
        {
            return $this->nom;
        }
     
        /**
         * Get id
         *
         * @return integer
         */
        public function getId()
        {
            return $this->id;
        }
     
     
    }
    entity Privilege:
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
     
    <?php
     
    namespace Geo\UserBundle\Entity;
     
    use Symfony\Component\Validator\Constraints as Assert;
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
     
    /**
     * Privilege
     *
     * @ORM\Table(name="privilege")
     * @ORM\Entity
     * @UniqueEntity(fields={"description"})
     */
    class Privilege
    {
     
        /**
         * @var string
         *
         * @ORM\Column(name="privilegeID", type="string", length=32)
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="IDENTITY")
         */
        private $id;
     
     
        /**
         * @var string
         *
         * @ORM\Column(name="description", type="string", length=128, nullable=false, unique = true)
         */
        private $description;
     
     
        /**
         * @var integer
         * @ORM\ManyToOne(targetEntity="Type", inversedBy="privileges")
         * @ORM\Column(name="type", type="integer", length=15, nullable=false)
         */
        private $type;
     
     
        protected $account;
     
     
         /**
         * Get type
         *
         * @return integer 
         */
         public function getType()
        {
            return $this->type;
        }
     
     
        public function getAccount()
        {
            return $this->account;
        }
     
        public function __construct()
        {   
     
        }
     
        /**
         * Set description
         *
         * @param string $description
         * @return Privilege
         */
        public function setDescription($description)
        {
            $this->description = $description;
     
            return $this;
        }
     
     
     
        /**
         * Set type
         *
         * @param integer $type
         * @return Privilege
         */
        public function setType($type)
        {
            $this->type = $type;
     
            return $this;
        }
     
     
         /**
         * Set id
         * @param string $id
         * @return Privilege
         */
        public function setId($id)
        {
            $this->id = $id;
     
            return $this;
        }
     
     
        /**
         * Get description
         *
         * @return string 
         */
        public function getDescription()
        {
            return $this->description;
        }
     
        /**
         * Get id
         *
         * @return string
         */
        public function getId()
        {
            return $this->id;
        }
     
     
    }
    action controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     public function rolesAction()
        {
     
     
          $privileges= $this->getDoctrine()->getEntityManager()->getRepository('GeoUserBundle:Privilege')->findAll();
          $form = $this->createForm(new \Geo\UserBundle\Form\Type\ListePrivilegeType(),$privileges);
     
             return $this->render(
                'GeoUserBundle:Account:grouprole.html.twig',
               array('form' => $form->createView()));
     
        }
    ListPrivilegeType :
    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
     
    <?php
     
    namespace Geo\UserBundle\Form\Type;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolverInterface;
     
    class ListePrivilegeType extends AbstractType{
     
        public function buildForm(FormBuilderInterface $builder, array $options) {
            $builder
                ->add('privileges','groupprivileges',array(
                    'label'=>'Privilèges : ',  
                    'class'=>'GeoUserBundle:Privilege',
                    'property'=>'description',
                    'expanded'=>true,
                    'multiple'=>true,
                ));
        }
     
        public function getName(){
            return 'ListePrivilege';
        }
     
        public function setDefaultOptions(OptionsResolverInterface $resolver){
            $resolver->setDefaults(array(
                'data_class' => 'Geo\UserBundle\Entity\Type',
            ));
        }
     
    }
    GroupePrivileges
    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
     
    <?php
    namespace Geo\UserBundle\Form\Type;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormInterface;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\Form\FormView;
    use Symfony\Component\OptionsResolver\OptionsResolverInterface;
    use Symfony\Component\OptionsResolver\Options;
     
    use Doctrine\Bundle\DoctrineBundle\Registry;
     
    class GroupPrivilegesType extends AbstractType{
     
        private $doctrine;
     
        public function __construct(Registry $doctrine){
            $this->doctrine = $doctrine;
        }
     
        public function setDefaultOptions(OptionsResolverInterface $resolver){
     
            $doctrine = $this->doctrine;
     
            $typesPrivilege = $doctrine->getEntityManager()->getRepository('GeoUserBundle:Type')->findAll();
     
            $resolver->setDefaults(array(
                'types' => $typesPrivilege));
        }
     
        public function buildForm(FormBuilderInterface $builder, array $options){
            $builder
                ->setAttribute('types',$options['types'])
            ;
        }
     
        public function buildView(FormView $view, FormInterface $form, array $options){
            $view->vars = array_replace($view->vars, array(
                'types'=>$form->getAttribute('types')
            ));
        }
     
        public function getParent(){
            return 'entity';
        }
     
        public function getName(){
            return 'groupprivileges';
        }
    }
    ?>
    ici le service déclaré dans mon fichier config.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     geo_user.form.type.groupprivileges:
            class: Geo\UserBundle\Form\Type\GroupPrivilegesType
            arguments: [@doctrine]
            tags:
                - { name: form.type, alias: groupprivileges }
    et finalement ma page d'affichage:

    ce que j'ai compris c que $privileges me retourne un tableau des objets au lieu d'une liste d'objets , Il faut régler ce probleme pour que je puisse voir si ma formulaire marche bien ou non :/

  4. #4
    Membre habitué Avatar de anta_res
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 93
    Points : 173
    Points
    173
    Par défaut
    essaye de mettre le data_class à null dans ListPrivilegeType

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    Non, il faut que tu comprennes que si tu as fait un objet Type qui représente ton formulaire, c'est ca qu"il faut passer a ton formulaire pour qu'il lie les informations avec la requete.

    Bref: ton erreur est dans ton controlleur ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $privileges= $this->getDoctrine()->getEntityManager()->getRepository('GeoUserBundle:Privilege')->findAll();
    $form = $this->createForm(new \Geo\UserBundle\Form\Type\ListePrivilegeType(),$privileges);
    Tu donne a ton formulaire un tableau de privilèges alors qu'il attend ton Type (que tu devrais nommer autrement car c'est pas du tout compréhensible par exemple ListePriviliegeObjectForm)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $objectForm = new Type();
    $objectForm $this->getDoctrine()->getEntityManager()->getRepository('GeoUserBundle:Privilege')->findAll();
    $form = $this->createForm(new \Geo\UserBundle\Form\Type\ListePrivilegeType(),$objectForm );

  6. #6
    Membre habitué Avatar de anta_res
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 93
    Points : 173
    Points
    173
    Par défaut
    En fait gototog ce qu'il veut faire c'est afficher tous les privilèges regroupé par type et non tous les privilèges d'un seul type.
    Donc il ne faut pas que le formulaire soit associé à l'entité type.

    Sinon l'autre solution serait de créer un objet ListePrivileges qui ne serait pas une entité mais juste un objet contenant tous les privilèges valides actuellement pour les transmettre au form et l'initialiser.
    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
     
    <?php
     
    namespace Geo\UserBundle\Object;
     
    /**
     * Geo\UserBundle\Object\ListePrivileges 
     */
    class ListePrivileges {
     
     $privileges
     
        public function getPrivileges(){
            if(is_null($this->privileges)){
                return array();
            }else{
                return $this->privileges;
            }
        }
     
        public function addPrivilege($privilege){
            $this->privileges[] = $privilege;
        }
     
        public function removePrivilege($privilege){
            unset($this->privileges[array_search($privileges, $this->privileges)]);
        }
     
     
    }
    Et dans ce cas là, le dataclass de ton ListPrivilegeType() serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'data_class' => 'Geo\UserBundle\Entity\ListePrivileges',
    Et dans ton controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public function rolesAction(){ 
        $listePrivileges = new ListePrivileges();
        $privileges= $this->getDoctrine()->getEntityManager()->getRepository('GeoUserBundle:Privilege')->findAll();
        foreach($privileges as $priviliege){
            $listePrivileges->addPrivilege($priviliege);
        }
        $form = $this->createForm(new \Geo\UserBundle\Form\Type\ListePrivilegeType(),$listePrivileges);
     
        return $this->render(
            'GeoUserBundle:Account:grouprole.html.twig',
            array('form' => $form->createView())
        ); 
    }
    Je pense qu'n truc du genre devrais pas trop mal fonctionner. A ajuster peut être.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Les Amis je suis perdue j'ai appliqué les modifications en créant l'objet ListePrivileges Mais là j'ai une page blanche qui s'affiche

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Points : 29
    Points
    29
    Par défaut SYMFONY2 GROUP CHECKBOX
    Rebonjour,
    Les amis je me suis débrouillée, j'ai modifié ma table privilege j'ai ajouté un champ type qui contient les types de chaque privilege,
    j'ai réussi à afficher le tout dans un twig , mais moi je travaille avec template php du coup j'ai besoin de transformer le code suivant en php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    {% for child in form.privilege %}
        {% set index = child.vars.value %}
     
     
    <tr>
            <td>{{ form_widget(child) }}</td>       
            <td>{{ choices[index].type }}</td>
            <td>{{ choices[index].description }}</td>
     
        </tr>
    {% endfor %}

Discussions similaires

  1. [SQL] Grouper les résultats par heures
    Par Fused dans le forum Langage SQL
    Réponses: 1
    Dernier message: 02/09/2009, 17h35
  2. [Reports6i] Grouper les enregistrements par lots
    Par pjcejbpojo dans le forum Reports
    Réponses: 10
    Dernier message: 24/04/2008, 13h56
  3. Grouper les resultats par dizaine de date
    Par maysa dans le forum Requêtes
    Réponses: 5
    Dernier message: 27/02/2008, 12h15
  4. Réponses: 3
    Dernier message: 17/10/2006, 09h16
  5. Trier les fichiers par type et les afficher par groupe ...
    Par KneXtasY dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 18/09/2005, 18h50

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