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 :

Problème avec le module FOSUSER Bundle [2.x]


Sujet :

Symfony PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Problème avec le module FOSUSER Bundle
    Bonjour à tous,

    je me suis lancé dans la grande aventure de symfony2 depuis peu
    Mais j'ai un problème avec le module fosuser

    J'ai une classe Client qui contient un champ Utilisateur, qui extend la classe BaseUser de fosuser. Je comprends à peu près toute la logique, le formulaire s'affiche bien comme je veux.

    Mais lorsque je valide un formulaire pour créer un nouvel enregistrement j'obtiens cette erreur...

    SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'password' cannot be null
    Si je remplis 'manuellement' ce champ j'obtiens une erreur similaire avec l'adresse mail...

    On dirait que je ne passe pas du tout par les fonctions de fosuser...

    Cependant, si je crée un nouvel utilisateur en passant par le formulaire propre de ma classe Utilisateur (et donc pas le formulaire imbriqué) l'utilisateur se crée sans problème (mais en db les champs algorithm et confirmation_token sont vides)

    ...

    Auriez vous une idée? je commence à désespérer ^^

    Merci d'avance.

    voici mon code:

    Utilisateur.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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    <?php
    namespace lhn\backendBundle\Entity;
    use FOS\UserBundle\Entity\User as BaseUser;
    use Gedmo\Mapping\Annotation as Gedmo;
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Component\Validator\Constraints as Assert;
     
     
    /**
     * @ORM\Entity
     */
    class Utilisateur extends BaseUser
    {
        /**
        * @ORM\Id
        * @ORM\Column(type="integer")
        * @ORM\generatedValue(strategy="AUTO")
        */
        protected $id;
     
        /**
         * @ORM\Column(name="deleted_at", type="datetime", nullable="true")
         * @Assert\Null
         */
        private $deleted_at;    
     
        public function __construct()
        {
            parent::__construct();
        }
     
        /**
         * Get id
         *
         * @return integer 
         */
        public function getId()
        {
            return $this->id;
        }
     
        /**
         * Set deleted_at
         *
         * @param datetime $deletedAt
         */
        public function setDeletedAt($deletedAt)
        {
            $this->deleted_at = $deletedAt;
        }
     
        /**
         * Get deleted_at
         *
         * @return datetime 
         */
        public function getDeletedAt()
        {
            return $this->deleted_at;
        }
    }
    Client.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
    <?php
    namespace lhn\backendBundle\Entity;
    use Gedmo\Mapping\Annotation as Gedmo;
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Component\Validator\Constraints as Assert;
     
     
    /**
     * lhn\backendBundle\Entity\Client
     *
     * @ORM\Table()
     * @ORM\Entity
     */
    class Client
    {
        /**
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
     
        /**
         * @ORM\OneToOne(targetEntity="Utilisateur", cascade={"persist"})
         */
        protected $utilisateur;    
     
    (...)
    ClientController.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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <?php
     
    namespace lhn\backendBundle\Controller;
     
    use lhn\backendBundle\Entity\Utilisateur;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
    use lhn\backendBundle\Entity\Client;
    use lhn\backendBundle\Form\ClientType;
     
    /**
     * Client controller.
     *
     * @Route("/client")
     */
    class ClientController extends Controller
    {
        /**
         * Displays a form to create a new Client entity.
         *
         * @Route("/new", name="client_new")
         * @Template()
         */
        public function newAction()
        {
            $entity = new Client();
            $form   = $this->createForm(new ClientType(), $entity);
     
            return array(
                'entity' => $entity,
                'form'   => $form->createView()
            );
        }
     
        /**
         * Creates a new Client entity.
         *
         * @Route("/create", name="client_create")
         * @Method("post")
         * @Template("lhnbackendBundle:Client:new.html.twig")
         */
        public function createAction()
        {
            $entity  = new Client();
            $request = $this->getRequest();
            $form    = $this->createForm(new ClientType(), $entity);
            $form->bindRequest($request);
     
            if ($form->isValid()) {
                $em = $this->getDoctrine()->getEntityManager();
                $em->persist($entity);
                $em->flush();
     
                return $this->redirect($this->generateUrl('client_show', array('id' => $entity->getId())));
     
            }
     
            return array(
                'entity' => $entity,
                'form'   => $form->createView()
            );
        }
     
    (...)
     
    }
    ClientType.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
    <?php
    namespace lhn\backendBundle\Form;
     
    use lhn\backendBundle\Entity\Utilisateur;
    use FOS\UserBundle\Form\Type;
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
     
    class ClientType extends AbstractType
    {
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder
    (...)
                ->add('utilisateur', new UtilisateurType())            
    (...)
            ;
        }
     
        public function getName()
        {
            return 'lhn_backendbundle_clienttype';
        }
    }
    UtilisateurType.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
    <?php
    namespace lhn\backendBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
     
    class UtilisateurType extends AbstractType {
     
    	public function buildForm(FormBuilder $builder, array $options) {
    		$builder
    		->add('username')
    		->add('email', 'email')
    		->add('plainPassword', 'repeated', array('type' => 'password'))
    		;
    	}
     
    	public function getDefaultOptions(array $options) {
    		return array(
    			'data_class' => 'lhn\backendBundle\Entity\Utilisateur',
    		);
    	}
     
    	public function getName() {
    		return 'UtilisateurType';
    	}
     
    }

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Après une bonne nuit de sommeil tout va toujours mieux

    J'ai donc trouvé ce qui manquait; il fallait rajouter

    $user = $entity->getUtilisateur();
    $userManager = $this->get('fos_user.user_manager');
    $userManager->updateUser($user);

    dans le ClientController.php

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

Discussions similaires

  1. Problème avec le module AI::Categorizer
    Par Pinoute dans le forum Modules
    Réponses: 0
    Dernier message: 20/07/2007, 11h50
  2. problème avec le module TK
    Par thierry7106 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 12/05/2007, 13h50
  3. Probléme avec le module turtle
    Par Newbie46 dans le forum Général Python
    Réponses: 7
    Dernier message: 15/02/2007, 21h03
  4. problème avec le module DBI
    Par vbcasimir dans le forum SGBD
    Réponses: 6
    Dernier message: 08/10/2005, 12h48
  5. problème avec un module
    Par vbcasimir dans le forum Modules
    Réponses: 2
    Dernier message: 29/08/2005, 15h59

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