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

 PHP Discussion :

Problème en FromType


Sujet :

PHP

  1. #1
    Membre habitué
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Points : 127
    Points
    127
    Par défaut Problème en FromType
    bonsoir,

    j'ai connais pas beaucoup le formulaire en SF2, c'est dans ce cas que je pose ma question dans ce forum.
    l'idée générale est de savoir comment attribuer a chaque groupe (par exemple: administrateurs) crée par l'administrateur un rôle (Par exemple: ROLE_ADMIN), on attribué a chaque rôle l’ensemble des permissions choisi par l'administrateur (par exemple : LIST, UPDATE pour un rôle donnée) sans l'utilisation des bundles de SF2 (obligatoirement).

    j'ai crée donc les classes suivantes en spécifiant les relations ORM entre eux (j'ai présenté seulement les attributs de base):

    -la classe "Roles":
    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
     
    <?php
     
    class Roles
    {
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
     
     
        /**
         * @var string
         *
         * @ORM\Column(name="nom_roles", type="string", length=225, nullable=true)
         *@Assert\NotBlank(message="le champ nom du role est obligatoire")
         *
         */
        Private $name_role;
     
        /**
         * @var ArrayCollection $groups
         *
         * @ORM\OneToMany(targetEntity="Groups", mappedBy="Roles", cascade={"persist", "remove", "merge"})
         */
        private $groups;
     
     
        /**
         * @var ArrayCollection Permissions $permision
         *
         * @ORM\ManyToMany(targetEntity="Permissions", inversedBy="Roles", cascade={"persist", "merge"})
         * @ORM\JoinTable(name="roles_permissions",
         *   joinColumns={@ORM\JoinColumn(name="id_rolesGR", referencedColumnName="id")},
         *   inverseJoinColumns={@ORM\JoinColumn(name="id_permGR", referencedColumnName="id_per")}
         * )
         */
        private $permissions_role;
     
        /**
         * Roles constructor.
         */
        public function __construct()
        {
            $this->groups = new ArrayCollection();
            $this->permissions_role = new ArrayCollection();
        }
     
    }
    -la classe "Permissions";
    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
     
    <?php
     
    class Permissions
    {
        /**
         * @var integer
         *
         * @ORM\Column(name="id_per", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
     
        /**
         * @var string
         * @ORM\Column(name="nom_permisions", length=255, nullable=true)
         * @Assert\NotBlank(message="le choix des permissions sont obligatoire")
         */
        private $name_permissions;
     
        /**
         * @var ArrayCollection Roles $roleGroup
         *
         * Inverse Side
         *
         * @ORM\ManyToMany(targetEntity="Roles", mappedBy="Permissions", cascade={"persist", "merge"})
         */
        private $roleGroup;
     
        /**
         * Permissions constructor.
         * @param ArrayCollection $roleGroup
         */
        public function __construct()
        {
            $this->roleGroup = new ArrayCollection();
        }
     
     
    }
    -La classe Group:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Class Group{
     
        /**
         * @var Role $role
         *
         * @ORM\ManyToOne(targetEntity="Roles", inversedBy="Groups", cascade={"persist", "merge"})
         * @ORM\JoinColumns({
         *  @ORM\JoinColumn(name="role_id", referencedColumnName="id")
         * })
         */
        private $role;
    }
    -donc dans la page "Create Group" je dois afficher à l'administrateur le formulaire qui contient l'icone du groupe, le nom, les rôles existants (affichage d’après la BD) et les permissions (Affichage d’après la BD) qui sont attribué par rôles. Ces attributs sont affiché dans la même page "Create Group". Au niveau de ce point j'ai bloqué puisque est un cas difficile un peu et j'arrive pas à résoudre.

    Voilà le formType "RoleTpe" :
    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
     
     
    class RolesType extends AbstractType
    {
     
     
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
     
            $builder
               ->add('name_role', 'choice', array('choices' =>
                                                     array(
                                                            'Role Admin' =>  'ROLE_ADMIN',
                                                            'Role Utilisateur' => 'ROLE_USER',
                                                            'Role Client' => 'ROLE_CLIENT'
                                                         ),
                                                         'required' => false,
                                                          'placeholder' => 'Choisir le role'
                                                 )
                 )
                ->add('permissions_role')
     
            ;
    }
    }
    -Le formType du GroupType;
    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
     
     
    class GroupsType extends AbstractType
    {
        /**
         * @param FormBuilderInterface $builder
         * @param array $options
         */
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('image',new ImagesType())
                ->add('name_groups', 'text',array('required' => false))
                ->add('role', new RolesType())
            ;
    }
    }
    Finalement , Je veux faire quelque chose (théoriquement ;

    1. sélectionnez une liste rolse à partir de la base de données
    2. montrer une case à cocher (checkbox) des permissions pour chacune des rôles (la liste des permissions sera affiché d'aprés la BD)
    3. Sauvegarder le groupe crée (son nom, son rôle et les ou la permission du rôle ) par l'administrateur


    Merci de trouver la solution mes amis ,

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 49
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    Je ne comprends pas pourquoi créer autant d'entité. Si je résume:

    Roles (id, name_role, groups, permissions_role)
    Permissions (id, name_permissions, roleGroup)
    Group ( role)

    Je vois pas l'intérêt de l'entité 'Group'...

    Ensuite, tu veux une page dans laquelle un admin peut attribuer à un groupe un rôle qu'il choisi via checkbox ou une liste déroulante. C'est bien ça?

Discussions similaires

  1. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  2. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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