Bonjour ou bonsoir à tous,
je travaille sur un petit projet (en fait je suis un tutoriel, je suis débutant symfony) où j'ai réalisé un formulaire qui me permet d'ajouter une annonce de job. J'ai voulu faire le formulaire d'édition en utilisant l'héritage de formulaire et en enlevant un champ "date". Seulement j'ai une erreur dont je n'arrive pas à comprendre l'origine
Method "date" for object "Symfony\Component\Form\FormView" does not exist in OCPlatformBundle:Advert:form.html.twig at line 34".
Cette fameuse ligne 34 contient l'instruction suivante
1 | {{ form_row(form.date) }} |
Voici ce que j'ai écris dans mon constructeur de formulaire AdvertEditType.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public function buildForm(FormBuilderInterface $builder, array $options) { $builder->remove('date'); } /** * @return string */ public function getName() { return 'oc_platformbundle_advert_edit'; } public function getParent() { return new AdvertType(); } |
Et voici ce que j'ai écris dans mon contrôleur
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 | public function editAction($id, Request $request) { // Récupération du manager $em = $this->getDoctrine()->getManager(); // On récupère l'annonce $id $advert = $em->getRepository('OCPlatformBundle:Advert')->find($id); if (null === $advert) { throw new NotFoundHttpException("L'annonce d'id ".$id." n'existe pas."); } //On crée le formulaire $form = $this->get('form.factory')->create(new AdvertEditType(), $advert); // On fait le lien Requête <-> Formulaire // À partir de maintenant, la variable $advert contient les valeurs entrées dans le formulaire par le visiteur $form->handleRequest($request); // On vérifie que les valeurs entrées sont correctes // (Nous verrons la validation des objets en détail dans le prochain chapitre) if ($form->isValid()) { $em->persist($advert); $em->flush(); $request->getSession()->getFlashBag()->add('notice', 'Annonce modifiée.'); // On redirige vers la page de visualisation de l'annonce modifiée return $this->redirect($this->generateUrl('oc_platform_view', array('id' => $advert->getId()))); } return $this->render('OCPlatformBundle:Advert:edit.html.twig', array( 'advert' => $advert, 'form' => $form->createView() )); } |
Si quelqu'un peut me donner un indice sur ce qui ne va pas, ce serait sympa. Merci d'avance