Bonjour,

voilà j'aurais voulu savoir comment on faisait pour renvoyer 2 formulaires sur la meme page ?
je m'explique, j'ai ma page index.html qui contient la liste de mes éléments + 2 listes déroulantes pour faire des filtres (intégrées dans indexAction avec affichage de mes éléments, la méthode renvoi donc la liste des éléments et les forms).

voici le code :
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
 
/**
     * Lists all Serveur entities and list type
     *
     * @Route("/", name="serveur_home")
     * @Method("GET")
     * @Template()
     */
    public function indexAction()
    {
        $em = $this->getDoctrine()->getManager();
		 $form = $this->listTypeForm();
		 $etaForm = $this->listEtatForm();
 
        $entities = $em->getRepository('MuBundle:Serveur')->findAll();
 
        return array(
            'entities' => $entities,
			'form' => $form->createView();
			'etaForm' => $etaForm->createView();
        );
    }
mes filtres ont chacun une méthode du meme controller (typeAction et etatAction) pour définir leurs actions (qui fonctionne) et chaque méthode renvoie le résultat sur la page index.html.twig

pour exemple, code de création d'un form

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
 
    public function listTypeForm()
    {
        $libelle = new TypeServeur();
        $form = $this->createFormBuilder($libelle)
            ->add('libelle', 'entity', (array(
                'class' => 'MuBundle:TypeServeur',
                'placeholder' => 'types de serveurs',
                'label' => ' ',
            )))
            ->add('submit', 'submit', array('label' => 'lister'))
            ->setMethod('GET')
            ->getForm();
        return $form;
    }
et methode action :

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
 
 public function typeAction(Request $request)
    {
        $em = $this->getDoctrine()->getManager();
 
        $form = $this->listTypeForm();
 
        $form->handleRequest($request);
 
        // si le formulaire est valide, cela retourne la liste des serveurs en fonction de leur type
            if($form->isValid()){
 
                $filtre=  $form['libelle']->getData();
                $strfilter = (string) $filtre;
 
                $entities = $em->getRepository('SiamuBundle:Serveur')->byfilter($strfilter);
 
                return $this->redirectToRoute('serveur_home', array(
                    'entities' => $entities,
 
                ));
           }
 
           // sinon cela retourne la liste de tous les serveurs
            else{
 
               $entities = $em->getRepository('SiamuBundle:Serveur')->findAll();
            }
 
        return $this->render('SiamuBundle:Serveur:index.html.twig', array(
            'entities' => $entities,
            'form' => $form->createView(),
        ));
    }
et le template :

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
 
{% extends '::base.html.twig' %}
 
{% block body -%}
    <h1>Tous les serveurs</h1>
 
    <table class="records_list">
 
        <div class="listType">
 
            {{ form_start(form) }}
            {{ form_row(form.libelle) }}
            {{ form_end(form) }}
 
        </div>
 
 
    <div class="listEtat">
        {{ form_start(etatForm) }}
        {{ form_row(etatForm.libelle) }}
        {{ form_end(etatForm) }}
    </div>
 
 
        <br/>
 
        <thead>
            <tr>
                <th>Nom</th>
                <th>Etat</th>
                <th>Description</th>
                <th>Datecreation</th>
                <th>Actions</th>
            </tr>
        </thead>
        <tbody>
        {% for entity in entities %}
            <tr>
 
                <td><a href="{{ path('serveur_show', { 'id': entity.id}) }}"
                       onclick="window.open(this.href, 'détail serveur', 'height=100, width=400, toolbar=no, menubar=no,' +
                        ' scrollbar=no, resizable=no, location=no, directories=no, status=no');return(false);">{{ entity.nom }}</a></td>
 
                <td>{{ entity.EtatServeur }}</td>
                <td>{{ entity.description }}</td>
                <td>{% if entity.dateCreation %}{{ entity.dateCreation|date('Y-m-d H:i:s') }}{% endif %}</td>
                <td>
                <ul>
                    <li style="list-style-type: none">
                        <a href="{{ path('serveur_edit', { 'id': entity.id }) }}"><img src="{{ asset('bundles/siamu/image/modif.png') }}" alt="Modifier"/></a>
                    </li>
                </ul>
                </td>
            </tr>
        {% endfor %}
        </tbody>
    </table>
 
 
    {% endblock %}
sauf que lorsque je valide un choix dans ma liste déroulante "type" par exemple, la page s'actualise mais le filtre ne se fait pas.
je pense que comme chaque méthode renvoi un formulaire et comme symfony ne récupère les infos que de la 1ere méthode quand il y a plusieurs infos qui sont envoyées sur la même page, je pense donc qu'il y a un écrasement de mes données envoyées...

est-ce que vous pourriez me conseiller une autre méthode d'approche svp ?

Je pensais envoyer l'affichage de mes listes déroulantes dans une page du style : form.html.twig, envoyé les réponses dans une autre page du style result.html.twig
et faire des includes de ces pages dans mon index.html...
est-ce faisable ?
est-ce qu'il existe un moyen pour contrôler l'affichage des informations aussi ? du style si rien est sélectionné, tu m'affiches tous les éléments, si un élément de la liste déroulante x est select, tu m'affiches avec ce tri etc ?

merci beaucoup à celui qui prendra le temps de me lire et de me répondre !