IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

rendu de plusieurs formulaire sur la meme page [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de caius2
    Femme Profil pro
    en reconversion professionnelle dans le développement web
    Inscrit en
    Mai 2015
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : en reconversion professionnelle dans le développement web
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2015
    Messages : 36
    Par défaut rendu de plusieurs formulaire sur la meme page
    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 !

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Par défaut
    Bonjour,
    le code proposé est compliqué .
    tu peux faire une seule formulaire html et récuperer ses données , ces données que tu as stocké ailleurs peut-Etre .
    si tu veux aussi avec FormBuilder , c'est possible de collecter les deux form en une même si certains filtres sont des données .
    pour la dernière question , Oui c'est possible en ajax et JQuery ou Angular ..
    Il y a une belle vidéo sur youtube " Symfony2 Ajax DevAndClick "

  3. #3
    Membre averti Avatar de caius2
    Femme Profil pro
    en reconversion professionnelle dans le développement web
    Inscrit en
    Mai 2015
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : en reconversion professionnelle dans le développement web
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2015
    Messages : 36
    Par défaut
    Bonjour et merci pour ta réponse,
    on m'avait dit que mon code était compliqué lol !
    tu peux m'expliquer comment avec formbuilder, je peux procéder ? je croyais que cela ne servait qu'à créer des formulaires du coup j'ai du mal à voir comment faire.. on m'a parlé de faire une requête DQL à l'intérieur, est-ce de ça que tu parles ?
    merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. validation de plusieurs formulaires sur la meme page
    Par sheisqo dans le forum Langage
    Réponses: 3
    Dernier message: 26/03/2009, 21h55
  2. Plusieurs vidéos sur une meme page
    Par Greg32885 dans le forum Flash
    Réponses: 0
    Dernier message: 29/01/2008, 18h59
  3. Plusieurs Listes sur la meme page Erreur
    Par PseT34 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 03/01/2008, 17h09
  4. Resultat d'un formulaire sur la meme page
    Par oussayd dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 09/08/2006, 12h15
  5. Réponses: 8
    Dernier message: 22/03/2005, 15h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo