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 :

EntityManager à l'extérieur d'un contrôleur : comment/pourquoi [2.x]


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
    Mai 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 94
    Par défaut EntityManager à l'extérieur d'un contrôleur : comment/pourquoi
    Bonjour à tous

    Dans mon application Symfony2, j'ai une classe d'entité Staffeur qui représente une personne. Pour la validation par mail des créations de comptes, chaque staffeur peut avoir un code d'activation qui permet d'aller activer le compte avec un lien reçu par mail.

    Ma question porte sur la génération de ce code. Il est composé avec 10 caractères aléatoires (jusque là rien de difficile), seulement au moment où on le génère je veux vérifier qu'il n'y a pas d'autre staffeur en attente d'activation avec le même code (sinon ambigüité du lien de validation). J'aimerais donc faire une requête avec Doctrine à l'intérieur d'une méthode d'Entity.

    1. Comment accéder à un EntityManager en dehors d'un contrôleur ? Google n'est pas très explicite sur la question ... une histoire de Service Container, mais ça reste assez flou pour moi.
    2. Il paraît que ce n'est pas une bonne pratique de faire ça. Je comprends qu'en faisant des accès à la base de données dans un getter ou un setter, ça risque de faire boucler l'application, mais là je suis dans une méthode "en plus" qui ne sera jamais rappelée par Doctrine... Où est le pb ?


    J'espère avoir été à peu près clair...
    Merci !

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 146
    Par défaut
    C'est pas plus simple de mettre une contrainte d'unicité sur ce champs et de faire un try / catch au moment du persist / flush ?

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut


    Il faut en effet que cet extérieur soit défini comme service. Cf. la doc : http://symfony.com/doc/2.0/book/service_container.html. Ça n'a aucune raison technique de ne pas fonctionner.

    Ensuite, ça ne me paraît pas très propre comme manière de faire... Une entité n'a rien à voir avec une base de données, c'est une classe qui contient des données et que tu peux persister et récupérer. Point. Si elle doit faire plus, c'est généralement mauvais signe, donc voir la réponse de Tolriq à tout prix.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 94
    Par défaut
    Ok, merci pour vos réponses
    Je regarde pour les contraintes, en effet avec des exceptions ça m'a l'air bien plus propre !

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

Discussions similaires

  1. Pourquoi un forum contributions ? Comment contribuer ?
    Par Jérôme Lambert dans le forum Contribuez
    Réponses: 1
    Dernier message: 23/04/2018, 12h17
  2. Réponses: 12
    Dernier message: 29/06/2014, 19h56
  3. Site web MVC : Comment gérer le contrôleur frontal ?
    Par HALOMOTO dans le forum Langage
    Réponses: 5
    Dernier message: 10/10/2006, 17h59
  4. Install directX pourquoi comment
    Par Marc_3 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 15/02/2006, 10h20

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