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 :

Impossible de Persister une entité


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
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut Impossible de Persister une entité
    Bonjour,

    Salut,

    J'ai quelques problème pour persister une entité. Cette entité correspond au coté many d'une relation one to many (one <gras>Candidate </gras>--> many <gras>Interview</gras>).
    J'ai donc un formulaire avec l'ID de mon candidat (entité <gras>Candidate</gras>) et en dessous j'ajoute autant d'interview que nécessaire.

    Voici le code de mon contrôleur:

    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 	public function saveinterviewAction($id)
    	{    
     
    		$request=$this->getRequest();
    		$em = $this->getDoctrine()->getEntityManager(); 
    		$entity = $em->getRepository('AdlHiringBundle:Candidate')->find($id);
    		$form = $this->createForm(new CandidateTypeInterview(), $entity);
     
     
            $form->bindRequest($request);
            $em->persist($entity);
    		foreach($entity->getInterviews() as $interview) 
                {
    				$em->persist($interview);
                }
            $em->flush();
     
    		return $this->render('AdlHiringBundle:Candidate:saveinterview.html.twig', array(
    		    'entity' => $entity,
     
     
            ));
     
    	}
    CandidateTypeInterview
    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
    <?php
     
    namespace Adl\HiringBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
    use Symfony\Bridge\Doctrine\Form\Type\EntityType;
     
     
    class CandidateTypeInterview extends AbstractType
    {
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder
     
                ->add('FIRSTNAME')
    			->add('interviews', 'collection', array('type' => new InterviewType,'allow_add' => true))
            ;
        }
     
        public function getName()
        {
            return 'adl_hiringbundle_candidatetype';
        }
     
    	public function getDefaultOptions(array $options)
        {
            return array(
                'data_class' => 'Adl\HiringBundle\Entity\Candidate',
    			'csrf_protection' => true,
                'csrf_field_name' => '_token',
                'intention' => 'candidate_item',    // a unique key to help generate the secret token
            );
        }
     
    }
    InterviewType

    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
    <?php
     
    namespace Adl\HiringBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
    use Symfony\Bridge\Doctrine\Form\Type\EntityType;
     
    class InterviewType extends AbstractType
    {
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder
     
    			->add('COMMENT')
     
     
            ;
        }
     
        public function getName()
        {
            return 'adl_hiringbundle_interviewtype';
        }
     
    	public function getDefaultOptions(array $options)
        {
            return array(
                'data_class' => 'Adl\HiringBundle\Entity\Interview',
    			'csrf_protection' => true,
                'csrf_field_name' => '_token',
                'intention' => 'interview_item',    // a unique key to help generate the secret token
            );
        }
     
    }
    Mon problème : impossible de persister l'entité Interview. Une idée ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    Personne n'a d'idées ?

    Qu'avez-vous besoin comme infos supplémentaires pour m'aider ?

    Pourriez-vous déjà me dire si ma relation est bonne ?

  3. #3
    Membre expérimenté

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Par défaut
    As tu des messages d'erreur ?
    as tu des info dans la log symfony, (il passe bien dans ton action ? il fabrique bien les requêtes ? et les exécutes ?)
    As tu également des info dans le log de mysql ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    Salut,

    Je n'ai aucun message d'erreur. J'essaie donc d'y aller pas à pas.
    Mais même récupérer les valeurs passées en POST, ça ne marche pas. Si au moins ça marchait je pourrais y aller step by step.

    Ma méthode action est bonne, oui.
    Pour les logs, je ne sais pas ce que je suis censé voir.
    Pour les request, j'ai ceci :

    adl_hiringbundle_candidatetype%5BFIRSTNAME%5D=John&amp;adl_hiringbundle_candidatetype%5B_token%5D=ae8c6ad830bddaa4a559d6568098098a7414c8ce&amp;save_interviews=

    Je remets la méthode de mon contrôleur qui est censé sauvé le POST car la chose intéressante, c'est qu'il ne passe même pas dans mon foreach.

    Mon contôleur :

    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
    	public function saveinterviewAction($id)
    	{    
    		$request = $this->getRequest();
    		$em = $this->getDoctrine()->getEntityManager();
    		$entity = $em->getRepository('AdlHiringBundle:Candidate')->find($id);
           	$form = $this->createForm(new CandidateTypeInterview(), $entity);
     
    		$form->bindRequest($request);
     
    				$em->persist($entity);
    				$cpt=0;
     
    				foreach($entity->getInterviews() as $interview)
    				{
     
    					$em->persist($interview);
    					$cpt++;
    				}
    				$em->flush();
     
     
    		return $this->render('AdlHiringBundle:Candidate:saveinterview.html.twig', array(
    			'entity' => $entity,
    			'cpt' => $cpt,
    			'form' => $form->createView(),
    		));
     
    	}

Discussions similaires

  1. [2.x] PB pour persister une entité
    Par philodido dans le forum Symfony
    Réponses: 3
    Dernier message: 30/10/2013, 16h58
  2. Réponses: 2
    Dernier message: 18/11/2010, 13h00
  3. Réponses: 12
    Dernier message: 27/05/2010, 20h01
  4. Pb avec Hibernate : impossible de persister mon entité
    Par Atatorus dans le forum GWT et Vaadin
    Réponses: 5
    Dernier message: 17/02/2009, 23h39
  5. [Linq to Sql] Impossible de supprimer une entité qui n'a pas été attachée.
    Par franculo_caoulene dans le forum Accès aux données
    Réponses: 1
    Dernier message: 09/01/2009, 14h12

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