2014-07-10 2 views
0

J'ai rencontré un problème lors de l'enregistrement des données de l'entité de conflit et cela a échoué à chaque fois que les méthodes sont appelées.L'enregistrement des données a échoué sur Symfony2 avec la méthode persist

$em->persist($conflict); 

retourner un écran vide et afficher une chaîne 'persist'. Je ne sais pas comment le résoudre car je suis nouveau à symfony2.

Voici mon exemple de code sur créer un contrôleur de conflit.

public function createAction() { 
    $conflict = new Conflict(); 
    $form = $this->createForm(new ConflictType(), $conflict, array(
     "container" => $this->container, 
     "em" => $this->getDoctrine()->getEntityManager() 
    )); 

    $request = $this->getRequest(); 
    $form->bindRequest($request); 
    if ($form->isValid()) { 
     $conflict->setAwardDeadlineCurrent($conflict->getAwardDeadlineInit()); 
     $em = $this->getDoctrine()->getEntityManager(); 
     $em->persist($conflict); 
     $em->flush(); 
     $request->getSession()->setFlash("notice", "Case has been created"); 
     return $this->redirect($this->generateUrl("acf_case_conflict_edit", array("id" => $conflict->getId()))); 
    } 
    return $this->render("ACFCaseBundle:Conflict:new.html.twig", array("form" => $form->createView())); 
} 
+0

Avez-vous des EventListener/abonné à l'événement? Est-ce que cette entité "conflit" a une méthode "PostUpdate" "PrePersist" etc? Si c'est le seul code que vous avez écrit, regarde bien (peut-être quelque chose de génial sur le formulaire "conflictType") donc ça doit être quelque chose à propos de notre installation symfony2 – Cesc

+0

d'accord avec @Francesc ... sonne comme die(); pour tester si une partie du code a été atteinte – nixoschu

Répondre

1

Il peut y avoir quelques inquiétudes:

Si u r en utilisant la dernière version de symfony i. e. (Symfony2.2 ou plus tard) puis:

$form->bindRequest($request); 

devraient être:

$form->handleRequest($request); 

et aussi en retour rendu ligne

return $this->redirect($this->generateUrl("acf_case_conflict_edit", array("id" => $conflict->getId()))); 

Vous êtes rendu juste votre identifiant alors que vous devriez passer un objet pour rendre le tout le champ de l'objet .. Il peut être comme ceci:

return $this->redirect($this->generateUrl("acf_case_conflict_edit", array("conflict" => $conflict))); 

aussi i do't comprendre obligatoire pour passer le

array(
    "container" => $this->container, 
    "em" => $this->getDoctrine()->getEntityManager() 
) 

dans votre création comme forme

$form = $this->createForm(new ConflictType(), $conflict, array(
    "container" => $this->container, 
    "em" => $this->getDoctrine()->getEntityManager() 
    )); 

Il peut être comme ça

$form = $this->createForm(new ConflictType(), $conflict); 
+0

Merci, je vais vérifier votre suggestion et vous faire savoir –

Questions connexes