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

ORM PHP Discussion :

enregistrer le nom du user qui crée l'objet [Doctrine]


Sujet :

ORM PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Par défaut enregistrer le nom du user qui crée l'objet
    bonjour,

    j'ai un champ user_add varchar

    je souhaite simplement enregistrer automatiquement le nom du user connecté

    je pensais faire une surchage de la methode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function save(Doctrine_Connection $conn = null) {
            $this->setUserAdd();
            parent::save();
        }
    comment accéder au nom du user ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->getUser()->getUsername();
    ne marche pas

    merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Par défaut
    j'essaie aussi un surchangeant dans actions.class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public function executeNew(sfWebRequest $request) {
     
            $this->form = $this->configuration->getForm();
            $objet = $this->form->getObject();
     
            $objet->setUserAdd($this->getUser()->getUsername());
     
            $this->travaux = $objet;
        }
    mais mon champ reste vide

  3. #3
    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
    Nous avons ici trois problèmes distinct à régler :


    La question de l'enregistrement du nom de l'utilisateur dans l'objet user de la session. Comment ce connecte ton utilisateur ? Quel est le processus de validation ? Comment est alimenté le sfUser ?


    La question de la récupération. Que tu partes du form ou de l'objet du modèle, tu dois pouvoir accéder à ton objet user. Pour ce faire :
    sfContext::getCurrent()->getUser()...


    La dernière question, où placer le code d'enregistrement de l'information. Il y a trois réponses, les trois sont bonnes :
    • Lors de la sauvegarde de l'enregistrement, et à chaque enregistrement, d'où que viennent la demande d'enregistrement, on récupère et on sauve.
    • Dans le form, à chaque demande d'enregistrement de ce form, et uniquement de ce form, qui que cela soit qui fasse l'enregistrement
    • Dans le contrôleur, suivant le cas et d'autre conditions.

    Je ne connais pas la théorie métier que tu veux utiliser, à toi de choisir en fonction de ton application.


    Question complémentaire. Tu veux stocker le nom de l'utilisateur. Ceci ne me semble pas conforme aux usage, je te conseillerais, plutôt, de stocker l'id de l'utilisateur. A partir de là, tu peux toujours récupérer le nom. Si besoin.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Par défaut
    Pour finir j'ai fait ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function executeNew(sfWebRequest $request) {
     
            $travaux = new Travaux();
            $travaux->setUserAdd($this->getUser()->getGuardUser()->getUsername());
     
            $this->form = $this->configuration->getForm($travaux);
            $this->travaux = $this->form->getObject();
     
        }
    En mettant mon champ useradd en hidden

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->widgetSchema['user_add'] = new sfWidgetFormInputHidden();

  5. #5
    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
    La méthode est bonne, quoique.

    En effet, tu fais transiter une information que l'utilisateur ne doit pas pouvoir modifier dans un champ hiden qu'il est relativement simple de modifier pour un utilisateur averti.

    Je mettrais la donnée, de la même manière, plutôt lors du retour du form ce qui évitera d'envoyer les données pour un allé retour sur le poste utilisateur. La donnée est dans le sfUser, elle y sera aussi au retour du form.

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Par défaut
    Je souhaitais revenir sur ce topic

    Comme l'a dit Rotta, ma méthode n'est pas spécialement mauvais, mais pour une donnée sensible comme ici, ce n'est pas très sécurisé.

    Alors j'ai trouvé un bon tuto sur http://prendreuncafe.com/blog/post/2...s-with-Symfony

    on se rend compte qu' en faite accéder aux données user depuis un formulaire ce n'est pas si simple que ça

    J'ai utilisé la méthode context.load_factories

    J'ai surchargé la méthode doSave dans monform.class.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    protected function doSave($con = null) {
     
            if ($this->isNew()) {
                $user = self::getValidUser();
                $username = $user->getGuardUser()->getUsername();
                $objet = $this->getObject();
                $objet->setUserAdd($username);
            }
     
            parent::doSave($con);
        }

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

Discussions similaires

  1. OneToMany et une boucle qui crée les objets..
    Par Invité dans le forum Hibernate
    Réponses: 6
    Dernier message: 27/12/2011, 14h40
  2. Méthode JS qui crée des objets dont le nom est recu en paramètre
    Par power of mind dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/07/2009, 14h44
  3. au nom de qui enregistrer un nom de domaine?
    Par ver_for dans le forum Droit
    Réponses: 2
    Dernier message: 03/04/2008, 19h24
  4. Réponses: 3
    Dernier message: 13/02/2007, 10h03
  5. fonction qui crée un objet
    Par crossbowman dans le forum C++
    Réponses: 4
    Dernier message: 16/03/2006, 22h23

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