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 :

Utiliser les données du user connecté dans un formulaire [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre habitué Avatar de magicbisous-nours
    Inscrit en
    Octobre 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 277
    Points : 177
    Points
    177
    Par défaut Utiliser les données du user connecté dans un formulaire
    Bonjour,
    J'ai un formulaire avec un champ entity.
    Je vais peupler la liste déroulante que cela va m'afficher grâce à une requête en DQL.
    Mon problème est que cette requête va être différente en fonction de l'utilisateur connecté qui aura demandé l'affichage de la page en question (notamment en fonction de ses rôles).
    Comment est-ce que je peux récupérer les données de l'utilisateur connecté au sein d'une classe de formulaire ?

    Merci d'avance
    [/HS]

    J'adorerai changer le monde, mais pas moyen de mettre la main sur le code source

  2. #2
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bon ça dépend sur quoi tu travailles, je suppose ici que c'est du php sans framework avec l'utilisation de Doctrine.

    Lors de la connexion, tu mets les données de l'utilisateur en Session.
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  3. #3
    Membre habitué Avatar de magicbisous-nours
    Inscrit en
    Octobre 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 277
    Points : 177
    Points
    177
    Par défaut
    ben si j'utilise Symfony2 donc mon formulaire je ne le codes pas from scratch mais j'utilise l'outil de Symfony2 me permettant de "décrire" mon formulaire en dans une classe PHP et Symfony2 se charge de le l'afficher (bon je peux gérer aussi mais c'est aussi utile pour la validation, la récupération des données, etc...)
    [/HS]

    J'adorerai changer le monde, mais pas moyen de mettre la main sur le code source

  4. #4
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Alors sur symfony, si tu es pas from scratch, tu as bien quelque chose avec sfUser ou sfContext par exemple
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  5. #5
    Membre habitué Avatar de magicbisous-nours
    Inscrit en
    Octobre 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 277
    Points : 177
    Points
    177
    Par défaut
    Ben en fait pas vraiment...
    J'ai trouvé en modifiant la requête Google que j'avais utilisée avant de venir :
    dans le controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form = $this->get('form.factory')->create(new UtilisateursType($user_connecte), $user);
    dans le form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public function __construct(\projet\UserBundle\Entity\User $user_connecte) {
            $this->user_connecte = $user_connecte;
        }
    public function buildForm(FormBuilder $builder, array $options)
        {
            $builder->add('ubo_responsable_id', 'entity', array('class' => 'projet\UserBundle\Entity\User_bo', 
                                                            'query_builder' => function(\projet\UserBundle\Repository\User_boRepository $er) {
                                                                return $er->createQueryBuilder('ubo')
                                                                          ->where('ubo.ubo_blr_id = :user_connecte_blr')
                                                                          ->setParameter('user_connecte_blr', $this->user_connecte->getUserBo()->getUboBlrId());
                                                            }));
    [/HS]

    J'adorerai changer le monde, mais pas moyen de mettre la main sur le code source

  6. #6
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Oui bein 'UtilisateursType' extends surêment 'sfUser' à l'initial
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  7. #7
    Membre habitué Avatar de magicbisous-nours
    Inscrit en
    Octobre 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 277
    Points : 177
    Points
    177
    Par défaut
    Il extends AbstractType :
    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
    <?php
    namespace projet\UserBundle\Form\Type;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
    use projet\UserBundle\Form\Type\UserBoFormType;
     
    class UtilisateursType extends AbstractType
    {
        public function __construct(\projet\UserBundle\Entity\User $user_connecte) {
            $this->user_connecte = $user_connecte;
        }
     
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder
                ->add('username')
                ->add('email')
                ->add('password', 'password')
                ->add('roles', 'choice', array('choices'       => array('ROLE_ADMIN'        => 'Administrateur',
                                                                        'ROLE_SUPER_ADMIN'  => 'Super Administrateur',
                                                                        'ROLE_GESTIONNAIRE' => 'Gestionnaire',
                                                                        'ROLE_RESPONSABLE'  => 'Responsable'),
                                               'multiple'      => true,
                                               'expanded'      => false,
                                               'property_path' => false))
                ->add('user_nom')
                ->add('user_prenom')
                ->add('user_tel_travail')
                ->add('user_bo', new UserBoFormType($this->user_connecte));
        }
     
        public function getDefaultOptions(array $options)
        {
            return array(
                'data_class' => 'projet\UserBundle\Entity\User',
            );
        }
     
        public function getName()
        {
            return 'User';
        }
    }
    ?>
    [/HS]

    J'adorerai changer le monde, mais pas moyen de mettre la main sur le code source

  8. #8
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Sur l'entity user, sorry
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  9. #9
    Membre habitué Avatar de magicbisous-nours
    Inscrit en
    Octobre 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 277
    Points : 177
    Points
    177
    Par défaut
    l'entity user est une entité qui me sert à enregistrer mes utilisateurs en base de données (oui elle hérite du FOSUserBundle). Mais en gros le seul truc ayant un rapport avec les utilisateurs dans mon formulaire (avant que je fasse le constructeur, etc) servait uniquement à dire que ce formulaire enregistre des utilisateurs (et ne permet pas de récupérer l'utilisateur utilisant l'appli)
    [/HS]

    J'adorerai changer le monde, mais pas moyen de mettre la main sur le code source

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/06/2014, 11h50
  2. Réponses: 6
    Dernier message: 05/05/2014, 10h11
  3. Mettre les données d'un tableau dans une formulaire
    Par youssefcss dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/04/2014, 11h47
  4. [OpenOffice][Base de données] Afficher les données d'une table dans un formulaire
    Par Milapyl dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 05/03/2014, 21h31
  5. Réponses: 0
    Dernier message: 10/08/2010, 17h37

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