bonjour,
je cherche à afficher les noms des groupes des utilisateurs dans mon module admin sf_guard_user.

Voici mon schema.yml pour la partie SfDoctrineGuardPlugin

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
sfGuardUser:
  actAs: [Timestampable]
  columns:
    id:
      type: integer(4)
      primary: true
      autoincrement: true
    username:
      type: string(128)
      notnull: true
      unique: true
    algorithm:
      type: string(128)
      default: sha1
      notnull: true
    salt: string(128)
    password: string(128)
    is_active:
      type: boolean
      default: 1
    is_super_admin:
      type: boolean
      default: false
    last_login:
      type: timestamp
  indexes:
    is_active_idx:
      fields: [is_active]
  relations:
    groups:
      class: sfGuardGroup
      local: user_id
      foreign: group_id
      refClass: sfGuardUserGroup
      foreignAlias: Users
    permissions:
      class: sfGuardPermission
      local: user_id
      foreign: permission_id
      refClass: sfGuardUserPermission
      foreignAlias: Users
Voici mon generator.yml avec la notion de groups (relation schema.yml)

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
generator:
  class: sfDoctrineGenerator
  param:
    model_class:           sfGuardUser
    theme:                 admin
    non_verbose_templates: true
    with_show:             false
    singular:              ~
    plural:                ~
    route_prefix:          sf_guard_user
    with_doctrine_route:   true
 
    config:
      list:
       #titre de la liste	  
        title: Users List
       #ordre et element a afficher		
        display: [id, =Utilisateur, groups, last_login, is_active]
       #nb par page
        max_per_page: 15
       #ordonner la liste
        sort: [username, asc]
        #Intitule des colonnes
        fields:
          is_active:
             label: Active
          Utilisateur:
             label: User	
          groups:
             label: Group			 
          last_login:
            label: Last login
          is_active:
            label: Active
        table_method: retrieveFrontendUserList	
       #action possibles
        batch_actions:
          _delete: ~
          pdfexport: {label: Export to PDF, action: pdfexport}
          csvexport: {label: Export to CSV, action: csvexport}	
      filter:
        #elements de filtre	  
        display: [is_active, last_login, groups_list]		  
      form:
        class: sfGuardUserAdminForm
        display:
          "NONE":                   [username, password, utilisateur]
          "Permissions and groups": [is_active, permissions_list]
      edit:
        title: Edit an user
 
      new:
        title: Add an user
J'ai également mis les liaisons de tables dans le fichier sfGuardUserTable.class.php pour pouvoir récupérer le nom du groupe

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
  //Optimisation de la requete avec les relations
  public function retrieveFrontendUserList(Doctrine_Query $q)
  {
 
    $rootAlias = $q->getRootAlias();
    $q->leftJoin($rootAlias . '.groups g');	
 
    $rootAlias = $q->getRootAlias();
    $q->leftJoin($rootAlias . '.permissions p');	
 
    return $q;
  }

Ceci me retourne l'affichage suivant dans ma liste des utilisateurs.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<pre> Doctrine_Collection data : Array( 0 : Object(sfGuardGroup) ) </pre>
Qu'est-ce qui ne convient pas ?

Merci.