Bonjour à tous,

J'ai un souci d'affichage de mon formulaire dans une popup. Ma vue du formulaire est un fichier : add.html.twig qui lui même est inclut dans un template parent.
Quand je clique pour afficher ma popup, j'ai les erreurs suivantes : "Variable 'form' does not exist." et "Variable 'entity' does not exist". Les 2 vues n'ont pas le même controller.
Je n'arrive pas à accéder à mon formulaire via le fichier d'include. J'ai essayé de faire un : {{ rendre(contrôler('AppBundle:Form:add', {} )}} dans le template mais toujours rien.
J'affiche bien mon formulaire sans include() et mon controller s'exécute bien. Je ne vois pas d'où vient le problème à part qu'il me dit les variables 'form' et 'entity' n'existent. Hors ces 2 variables existent belle et bien mais ils ne sont pas accessibles en include. Merci par avance pour votre aide !

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

// layout.html.twig

{% block body %}

   {% include '/form.html.twig' %}

   <div>
      <h1>{{ entity.name }}</h1>
      <p>{{ entity.description }}</p>

      <a href="#" id="popup">Afficher popup</a>
   </div>

{% endblock %}

{% block javascripts %}

   <script>
      $(function () {
            $('#popup').on('click', function(){
            // affiche la popup
            });
        });
   </script>

{% endblock %}
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

// add.html.twig

{% block body %}
   <div>
      <h3>Formulaire</h3>

      {{ form_start(form) }}
         {{ form_errors(form) }}

         {{ form_widget(form.title) }}

         {{ form_widget(form.body) }}

         <input type="submit" value="Valider">

            {{ form_rest(form) }}
      {{ form_end(form) }}
   </div>
{% endblock %}
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
 
 
// FormController.php
 
class FormController extend Controller
{
   public function addAction(Request $request, $id)
   {
      $entity = new Entity();
 
      $form   = $this->createForm(FormType::class, $entity);
 
      if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
         $em = $this->getDoctrine()->getManager();
         $em->persist($entity);
         $em->flush();
 
         $request->getSession()->getFlashBag()->add('notice', 'Success');
 
         return $this->redirectToRoute('form_view', array('id' => $entity->getId()));
      }
 
      return $this->render('AppBundle:Form:add.html.twig', array(
         'form' => $form->createView(),
      ));
   }
}