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 un objet User dans un formulaire


Sujet :

Symfony PHP

Vue hybride

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut Utiliser un objet User dans un formulaire
    Bonjour,

    Petite question toute bête mais à laquelle je ne sais répondre :s : Comment faire pour pouvoir utiliser un attribut d'un objet sf_user dans une classe de formulaire?
    En gros j'en ai besoin pour définir une valeur par défaut dans un champ, et cette valeur est définie dans un attribut de l'objet User. Le hic, c'est que je n'arrive pas à l'utiliser ici (c'est à dire dans "lib/form/doctrine/PROJET_SIGIPForm.class.php")...

    J'ai bien tenter de faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->getUser()->getAttribute('att');
    ou encore comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sf_user->getAttribute('att');
    et même comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sfUser::getUser()->getAttribute('att');
    mais aucune de ces méthodes ne fonctionne...

    S'il te plait forum, éclaire moi!
    Merci d'avance,
    Dash777

  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
    un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sfConfig::getContext()->getUser()->getAttribute()

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut
    la méthode "getContext" n'existe pas dans sfConfig, au mieux j'ai la méthode "get" ou "getAll"...
    Sinon j'en ai trouvé un effectivement dans sfComponent, mais il fonctionne pas non plus :s
    Mais en même temps, quitte à utiliser sfComponent, autant récupérer la méthode getUser directement... (qui ne marche pas non plus, j'ai la même erreur qu'avec getContext)


    Mais en fouillant un peu, j'ai fini par trouver quelque chose qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sfContext::getInstance()->getUser()->getAttribute('att')
    Merci pour ton aide !

  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
    C'est celui-là que je voulais donner.

    Désolé.

  5. #5
    Membre chevronné Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Par défaut
    Bonjour,

    Il existe une méthode plus propre sur le principe mais pas toujours applicable : passer le user au formulaire depuis l'action.

    actions.class.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form = new myForm(null, array('user' => $this->getUser()));
    myForm.class.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tonUser = $this->getOption('user');
    C'est plus MVC.

  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
    Citation Envoyé par Dash777 Voir le message
    En gros j'en ai besoin pour définir une valeur par défaut dans un champ, et cette valeur est définie dans un attribut de l'objet User.
    Il a raison sacricri, enfin presque. En partant de la question d'origine, il faudrait aller encore plus loin... Passer directement l'information à l'objet formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $form = new myForm(null,  array('MonAttribut' => $this->getUser()->getAttrubute('MonAttribut')));
    Reste que, dans le cadre des objets du modèle (et pas des formulaires), pour des méthodes qui ne doivent retourner que les enregistrements liés à l'utilisateur courant, je préfère la méthode de l'objet sfConfig, qui donne une plus grande indépendance au code de la méthode.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Par défaut
    Il n'est pas conseillé d'utiliser sfConfig::getInstance() dans le modèle car cela pose des problèmes.

    Il y a notamment des symfony Task qui bloquent à cause de ce genre de soucis. J'avais eu des problèmes de ce genre l'an dernier et cela venait d'appels nombreux à cette méthode.

    On retrouve sur pas mal de blogs des méthodes permettant d'éviter son utilisation. Par exemple :

    Enfin, afin d’éviter de faire un appel à sfContext ::getInstance() pour obtenir la culture de l’utilisateur dans un formulaire, une solution élégante est de passer la culture en option du sfForm ! (voir diapo 23). Utiliser sfContext est en effet une mauvaise pratique car cela empêche de tester vos formulaires.
    Aussi je rejoins la méthode de sacricri qui est plus sûre sur le long terme.

    Pris sur cette page : http://www.clever-age.com/veille/blo...ints-cles.html

  8. #8
    Membre chevronné Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Par défaut
    Citation Envoyé par mimi68 Voir le message
    Il a raison sacricri, enfin presque. En partant de la question d'origine, il faudrait aller encore plus loin... Passer directement l'information à l'objet formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $form = new myForm(null,  array('MonAttribut' => $this->getUser()->getAttrubute('MonAttribut')));
    Reste que, dans le cadre des objets du modèle (et pas des formulaires), pour des méthodes qui ne doivent retourner que les enregistrements liés à l'utilisateur courant, je préfère la méthode de l'objet sfConfig, qui donne une plus grande indépendance au code de la méthode.
    Oui, j'avais hésité à l'écrire comme tel mais bon, je voulais surtout passer l'idée.

    J'avoue que j'avais tendance à utiliser sfContext::getInstance() en permanence avant mais je me suis assez rapidement que c'était loin d'être la solution la plus MVC et surtout, cela empêchait de tester correctement le code.
    Qui plus est, il me semble que Fabien Potentier lui-même déconseillait l'utilisation de cette méthode statique mais je ne trouve plus les sources (je crois que c'était lors de l'édition 2010 du SymfonyLive).

Discussions similaires

  1. Utiliser l'objet appelant dans l'objet appelé
    Par Nyphel dans le forum C++
    Réponses: 3
    Dernier message: 13/03/2007, 10h33
  2. Réponses: 21
    Dernier message: 29/11/2006, 22h51
  3. Utiliser des objets automation dans Oracle
    Par WebPac dans le forum Forms
    Réponses: 10
    Dernier message: 29/11/2006, 19h17
  4. Utiliser des objets SWING dans une vue RCP
    Par manuga72 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 20/10/2006, 17h26
  5. Liste d'Objet OLE dans un Formulaire
    Par ivan7 dans le forum Access
    Réponses: 7
    Dernier message: 22/08/2006, 10h09

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