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 :

Lier un article à un utilisateur FOSUser


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 67
    Points : 45
    Points
    45
    Par défaut Lier un article à un utilisateur FOSUser
    Salut,

    J'ai créé une classe Article.php

    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
    46
    47
    48
    49
    50
    51
    <?php
    namespace Site\MonBundle\Entity;
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Component\Validator\Constraints as Assert;
    use Site\UtilisateurBundle\Entity\Utilisateur;
    /**
     * @ORM\Entity
     */
    class Article
    {
    	/**
    	 * @ORM\GeneratedValue
    	 * @ORM\Id
    	 * @ORM\Column(type="integer")
    	 */
    	private $id;
    	/**
    	 * @ORM\Column(type="string",length="255")
    	 * @Assert\NotBlank()
    	 * @Assert\MinLength(3)
    	 */
    	private $titre;
    	/**
    	 * @ORM\Column(type="string",length="500")
    	 */
    	private $chapo;
    	/**
    	 * @ORM\Column(type="string",length="5000")
    	 * @Assert\NotBlank()
    	 * @Assert\MinLength(3)
    	 */
    	private $texte;
        /**
         * @ORM\ManyToOne(targetEntity="Site\UtilisateurBundle\Entity\Utilisateur")
         * @Assert\NotBlank()
         */  
    	private $utilisateur;
    	/**
    	 * @ORM\Column(type="date")
    	 * @Assert\NotBlank()
    	 */
    	private $date_pub;
    	 /**
         * @ORM\Column(type="string",length="1")
         * @Assert\NotBlank()
         * @Assert\Choice(choices = {"B", "P", "C"})
         */    
    	 // B : Brouillon - P : Publié - C : Corbeille
        private $etat;
    }
    ?>
    Comment je fais maintenant pour qu'à la création d'un article (remplissage du formulaire) je récupère l'utilisateur connecté pour le mettre dans le champ utilisateur ?

    Merci pour votre aide !

  2. #2
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Salut,

    1. Je mettrais une relation OneToOne avec ta table User pour la propriété $utilisateur

    2. Dans ton FormType, tu le mets en champ hidden avec required false

    3. Dans ton controller, avant le $form->isValid(), tu récupères l'entité de ton utilisateur connecté en récupérant son username en session. Ensuite tu l'ajoutes à ton Objet Article

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // $user = Ton entité user
    $article->setUtilisateur($user);
    if($form->isValid())
    {
    // etc...
    }

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 67
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par picowebo Voir le message
    1. Je mettrais une relation OneToOne avec ta table User pour la propriété $utilisateur
    Pourquoi ? Un article n'a qu'un auteur, mais un auteur à plusieurs articles.

    Citation Envoyé par picowebo Voir le message
    2. Dans ton FormType, tu le mets en champ hidden avec required false
    Ok, ça j'ai compris
    Citation Envoyé par picowebo Voir le message
    3. Dans ton controller, avant le $form->isValid(), tu récupères l'entité de ton utilisateur connecté en récupérant son username en session. Ensuite tu l'ajoutes à ton Objet Article
    J'ai presque tout compris. Sauf comment récupérer l'id de mon user. Pour l'instant je n'arrive qu'à retrouver son Username

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $user = $this->container->get('security.context')->getToken()->getUser();
    Je peux faire ça, mais ça me fait une requete de plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $username = $this->container->get('security.context')->getToken()->getUser();
    $em = $this->container->get('doctrine')->getEntityManager();
    $user = $em->getRepository('SiteUtilisateurBundle:Utilisateur')->find($username);

Discussions similaires

  1. [PHP 5.0] Lier l'article aux commentaires
    Par lythande dans le forum Langage
    Réponses: 9
    Dernier message: 13/04/2015, 16h15
  2. Lier un article en plusieurs langues
    Par redcurve dans le forum Référencement
    Réponses: 1
    Dernier message: 28/03/2014, 21h23
  3. Lier une entreprise à un utilisateur (Employeur)
    Par khrikhech dans le forum Doctrine2
    Réponses: 1
    Dernier message: 27/04/2013, 06h35
  4. [jPDL] Lier workflow et interface utilisateur
    Par Nithril dans le forum Wildfly/JBoss
    Réponses: 0
    Dernier message: 08/04/2009, 23h14

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