Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/04/2011, 14h04   #1
Futur Membre du Club
 
FX
Inscription : juillet 2010
Messages : 75
Détails du profil
Informations personnelles :
Nom : FX

Informations forums :
Inscription : juillet 2010
Messages : 75
Points : 17
Points : 17
Par défaut Affichage du groupe utilisateur dans sf_guard_user

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 :
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 :
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 :
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 :
<pre> Doctrine_Collection data : Array( 0 : Object(sfGuardGroup) ) </pre>
Qu'est-ce qui ne convient pas ?

Merci.
pixworld est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 11h50   #2
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Rapidement.
Tu devrais envisager de passer par un partiel plutôt que par le champs qui, lui, pointe sur un Doctrine_Collection
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 15h53   #3
Futur Membre du Club
 
FX
Inscription : juillet 2010
Messages : 75
Détails du profil
Informations personnelles :
Nom : FX

Informations forums :
Inscription : juillet 2010
Messages : 75
Points : 17
Points : 17
J'ai beaucoup de difficultés à créer le partial du à des méconnaissance de symfony.

J'ai créée un fichier components.class.php dans /apps/frontend/modules/sfGuardUser/actions permettant de rechercher le groupe de mon utilisateur pour l'afficher sur l'index du module sf_guard_user.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
class sfGuardUserComponents extends sfComponents
{
 
	public function executeUsergroup(sfWebRequest $request)
  {
 
	  print($request->getParameter('id'));
 
	  //recherche du groupe utilisateur
	  $this->group = Doctrine::getTable('sfGuardUserGroup')
						->createQuery('a')
						->leftJoin('a.sfGuardGroup sfg')
						->where('user_id = ?',$request->getParameter('id'))
						->execute();
  }	  
 
}
J'ai ensuite créée un fichier _usergroup.php dans /apps/frontend/modules/sfGuardUser/templates

Code :
<?php echo $group->getName(); ?>
J'ai les 2 erreurs suivante :
Citation:
Notice: Undefined variable: group in /home/sd_phototheque/apps/frontend/modules/sfGuardUser/templates/_usergroup.php on line 4
Fatal error: Call to a member function getName() on a non-object
Quelle est la méthode pour récupérer l'utilisateur sur la ligne courante, est-ce à traiter dans le component ou le partial ?
pixworld est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 09h51   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Tu peux préciser ce que tu veux obtenir (et modifier au final) ?

J'ai un peu l'impression de nager à contre courant dans une rivière infestée de requins.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 10h17   #5
Futur Membre du Club
 
FX
Inscription : juillet 2010
Messages : 75
Détails du profil
Informations personnelles :
Nom : FX

Informations forums :
Inscription : juillet 2010
Messages : 75
Points : 17
Points : 17
Dans l'admin du module sf_guard_user, j'ai la liste des utilisateurs avec Nom prénom, date de dernier login et statut actif/Non actif et actions.

je cherche à ajouter une colonne avec le nom du groupe auquel ils appartiennent, sur la base des liaisons en sf_guard_user_group et sf_guard_group.
pixworld est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 10h56   #6
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
En fait, si tu veux faire cela il faut que tu crées une méthode dans ton modèle sfGuardUser qui va te retourner la liste des user et un champ texte supplémentaire avec la liste des groupes.

Attention, cette liste ne pourra être utilisée pour un filtre ou tris éventuel.

Autre solution, tu peux "peut-être" créer un partial qui génère la liste. Par contre ceci va impliquer que tu vas avoir une requête pour chaque ligne affichée, ce qui peut être lourd pour la génération de la page (ou pas, cela dépend des performances du serveur de base de données).

Par contre, je ne vois pas trop l'intérêt, en effet, quant tu affiches un groupe tu as la liste des personnes qui en sont membres qui s'affichent, n'est-ce pas suffisant ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 11h13   #7
Futur Membre du Club
 
FX
Inscription : juillet 2010
Messages : 75
Détails du profil
Informations personnelles :
Nom : FX

Informations forums :
Inscription : juillet 2010
Messages : 75
Points : 17
Points : 17
bonjour,
je te remercie pour ta réponse, je vais étudier ces possibilités.

Merci.
pixworld est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h15.


 
 
 
 
Partenaires

Hébergement Web