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":
-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
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 Group:
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(); } }
-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.
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; }
Voilà le formType "RoleTpe" :
-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
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') ; } }
Finalement , Je veux faire quelque chose (théoriquement ;
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()) ; } }
- sélectionnez une liste rolse à partir de la base de données
- montrer une case à cocher (checkbox) des permissions pour chacune des rôles (la liste des permissions sera affiché d'aprés la BD)
- 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 ,
Partager