Chers amis développeurs,
J'essaye actuellement de développer un formulaire d'édition avec l'aide de Symfony.
Pour ce faire, je sélectionne mon objet dans ma base grâce a Doctrine, puis je génère mon formulaire à partir de cet objet.
Sauf que j'ai un champ entity dans mon formulaire et que ça bloque à ce niveau là dans mon objet.
J'obtiens le message suivant "
Expected argument of type "object", "string" given".
Je pense que c'est parce que mon champ catégorie doit être un objet, mais je ne vois pas comment résoudre le problème.
Pour résumer, je souhaite pré-remplir les champ de ce formulaire avec les données de l'article sélectionné en base.
Voici la partie du code de mon controller qui charge les données de l'objet sélectionné dans le formulaire :
J'ai bien éssayé en créant un objet articleCategory et l'insérant dans mon objet article mais là j'obtiens le message suivant "Entities passed to the choice field must be managed"
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 if ($request->getMethod() == 'POST') { $form->bindRequest($request); $articleId = $_POST['form']['Title']; $em = $this->getDoctrine()->getEntityManager(); $article = $em->getRepository('JBBlogBundle:Articles')->find($articleId); $form = $this->createFormBuilder($article, array('label'=>'Update an article.')) ->add('Title', 'text', array('label'=>'Title : ')) ->add('Content', 'textarea', array('label'=>'Content : ')) ->add('Author', 'text', array('label'=>'Author : ')) ->add('Category', 'entity', array( 'class' => 'JB\BlogBundle\Entity\ArticlesCategories', 'property'=>'name', 'label'=>'Category : ')) ->add('Keywords', 'text', array('label'=>'Keywords : ')) ->getForm(); return $this->render('JBBlogBundle:Admin_Articles:CreateArticle.html.twig', array('form'=>$form->createView(), 'notification'=>'')); }
Je suis tombé la dessus pendant mes recherches :
http://forum.symfony-project.org/vie...p?f=23&t=35678
http://forum.symfony-project.org/vie...p?f=23&t=35709
J'ai aussi entendu parler de la méthode "merge" de la classe Entity dans Doctrine :
Si jamais ça peut mettre l'un de vous sur la piste !merge
public object merge(object entity)
Merges the state of a detached entity into the persistence context of this EntityManager and returns the managed copy of the entity. The entity passed to merge will not become associated/managed with this EntityManager.
Parameters:
entity - The detached entity to merge into the persistence context.
Returns:
The managed copy of the entity.
Merci de votre aide.
Cordialement,
BENOIT Julien.
Partager