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 :

Affichage du groupe utilisateur dans sf_guard_user


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 75
    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 : 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.

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Rapidement.
    Tu devrais envisager de passer par un partiel plutôt que par le champs qui, lui, pointe sur un Doctrine_Collection

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 75
    Par défaut
    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 : 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
    <?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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $group->getName(); ?>
    J'ai les 2 erreurs suivante :
    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 ?

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    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.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 75
    Par défaut
    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.

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    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 ?

Discussions similaires

  1. [SP-2007] Groupe utilisateur dans les liste
    Par MOSSMALDINI dans le forum SharePoint
    Réponses: 0
    Dernier message: 11/04/2010, 13h32
  2. ré-affichage d'un msgbox dans x jours (selon choix utilisateur)
    Par léclaireur dans le forum Général VBA
    Réponses: 6
    Dernier message: 03/05/2007, 08h48
  3. Réponses: 2
    Dernier message: 17/04/2007, 11h37
  4. Un utilisateur dans un groupe
    Par IdrilElendil dans le forum VBScript
    Réponses: 6
    Dernier message: 04/04/2007, 21h49
  5. Réponses: 8
    Dernier message: 27/02/2007, 18h34

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