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 :

Comment avoir accès à l'utilisateur courant ainsi qu'à ses données en session n'importe où depuis mon appli [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Par défaut Comment avoir accès à l'utilisateur courant ainsi qu'à ses données en session n'importe où depuis mon appli
    il y a 2 ans j'avais travaillé sur un projet symfony, et si ma mémoire est bonne, on pouvait accéder à l'utilisateur courant ainsi qu'à ses données stockées en session, de n'importe ou depuis l'appli (pour les requêtes notamment).


    J'ai l'impression qu'il n'y a pas cette fonctionnalité la dans Sf2, et que l'on ne peut accéder aux données de l'utilisateur(session) uniquement dans un contrôleur.Du coup, quand je fais appel à des requêtes dans mes repository, je transmet l'utilisateur et la session (car mes requêtes sont paramétrées suivant le rôle de l'utilisateur ainsi que diverses données stockées en session. Idem pour mes formulaire qui vont êtres configurés différemment suivant le rôle de l'utilisateur

    je trouve pas ca super propre et assez lourd, du coup je voulais avoir l'avis de ceux qui ont une connaissance avancée du framework pour savoir s'il y avait une meilleure façon de faire.

    D'avance merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Sans aucune connaissance de SF2, on peut image jouer avec session_set_save_handler afin de faire partir les données de session en base plutôt que sur fichier. De cette façon, tu peux les récupérer de n'importe où.

  3. #3
    Membre expérimenté

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Par défaut
    C'est que je veux éviter de faire. Je souhaite garder une certaine cohérence en utilisant les objets du framework.
    D'ailleurs ce problème se pose aussi pour les paramètres définis dans le parameter.ini. Il ne sont accessible que dans le controlleur ce qui de mon point de vu est assez limité...

    Edit : après de multiples recherches, la réponse qui pourrait convenir serait de passer l'objet session et user lors de l'instanciation du service Doctrine. Par contre je vois pas du tout ou c'est configuré.

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    Bonjour,

    sur les dernière version de Doctrine, il y a un système de filtre sql :
    http://docs.doctrine-project.org/en/...e/filters.html
    Je n'ai pas testé son intégration dans Symfony 2.1


    En attendant, sur un problème similaire, j'ai adopté cette stratégie:
    1. créer une classe entityManager personalisé avec un attribut currentUser,
      on l'enregistre en mettant dans config.yml
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      parameters:
         doctrine.orm.entity_manager.class: Ma/Classe/Qui/Herite/De/EntityManager
    2. créer un service Listener sur l'evenement onController par exemple, celui-ci se charge d'injecter le user dans l'entityManager
    3. dans les repository, on a désormais accés au user par le biais de
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $this->getEntityManager()->getCurrentUser()


    ici j'injecte le user, mais on pourrait injecter n'importe quel service.
    Noter que l'on n'injecte pas le service à l'instanciation de l'entityManager, mais lorsque l'on arrive sur le controlleur.
    Il faut toujours tester si on a un currentUser avant de l'utiliser comme critère (exemple de l'appel d'une requete par ligne de commande, ou il n'y a pas de user connecté)

  5. #5
    Membre expérimenté

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Par défaut
    As tu un exemple complet de code, ça fait 2 heures que je m'escrime a faire marcher mais il me prend toujours la classe de base pour l'entityManager. J'ai l'impression qu'il ne me prend pas en compte cette ligne la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    parameters:
      doctrine.orm.entity_manager.class: Experian\FactumailBundle\Doctrine\MyEntityManager
    qui indique qu'il faut utiliser cette classe la pour mon entitymanager.

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    Il faut redéfinir la méthod statique "create", afin qu'elle renvoit une instance de ton propre entity manager
    voir http://stackoverflow.com/questions/8...lass-in-symfon

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/06/2008, 12h38
  2. Comment avoir accès à "Ses messages"
    Par idamarco dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 23/09/2007, 14h39
  3. Réponses: 17
    Dernier message: 15/04/2007, 13h28
  4. Réponses: 2
    Dernier message: 22/02/2007, 15h21
  5. [C++ 1.1] Comment avoir accès aux méthodes d'une dll ?
    Par jacklsurf dans le forum Framework .NET
    Réponses: 6
    Dernier message: 15/04/2006, 23h49

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