[Symfony 3.2.2] Submit form ne fonctionne pas

Fermé
patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 26 novembre 2023 - Modifié par patrice86 le 31/01/2017 à 15:02
patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 26 novembre 2023 - 7 févr. 2017 à 11:17
Bonjour,

Je suis entrain de développer une application web en utilisant Symfony 3.2.2.

J'ai créer un FormType avec un champ save dans la méthode buildForm() :
 ->add('save', SubmitType::class);


Dans mon template twig, j'affiche le bouton save :
{{ form_start(form) }}
{{ form_row(form.save) }}
{{ form_end(form) }}


Lorsque je clique sur le bouton save (qui est bien un button type="submit" en html si je regarde le code source la page, rien ne se passe. Le bouton clique dans le vide.
<button type="submit" id="meeting_save" name="meeting[save]">Create</button>

J'ai essayé en utilisant form_widget(form.save) mais ça ne change rien.

Pas besoin de spécifier d'action dans l'ouverture du form, symfony redirige automatiquement le formulaire vers l'url qui l'a appelé si il n'y pas d'action définie. (cf: doc de symfony).
Des idées ?

Merci :)

2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
31 janv. 2017 à 16:40
Salut,

La balise form est-elle correctement générée ?
As tu des erreurs de syntaxe html ? (https://validator.w3.org/)_As tu des erreurs dans la console de développement de ton navigateur ?

Bonne journée,
0
patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 26 novembre 2023 125
Modifié par patrice86 le 2/02/2017 à 11:11
Bonjour,

La balise form est correctement générée :
<form class="ng-pristine ng-valid" name="meeting" method="post">


Avec à l'intérieur le bouton de type input et la balise pour fermer le form
<button type="submit" id="meeting_save" name="meeting[save]">Create</button>
<input id="meeting__token" name="meeting[_token]" value="E5mVuaHcz6-Nf0Hydr3-GSreV-Ns_NSCqdn_0OrODHk" type="hidden">
</form>
0
Nessdarth Messages postés 36 Date d'inscription vendredi 16 décembre 2016 Statut Membre Dernière intervention 28 février 2017 3 > patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 26 novembre 2023
2 févr. 2017 à 15:55
Bonjour,

C'est normal si dans la balise form, l'attribut action ne soit pas défini ???

Il me semble qu'on peut omettre cette attribut à condition que le script qui va traiter le formulaire soit le même qui a généré le dit formulaire.
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
2 févr. 2017 à 11:45
Étrange que ton formulaire ne réagisse pas si celui-ci est correctement généré.

As tu des erreurs de syntaxe html et/ou des erreurs javascript ?

Peux t-on voir le code html complet de ta page ?
0
patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 26 novembre 2023 125
Modifié par patrice86 le 2/02/2017 à 11:55
Voici le fichier HTML généré au complet (un peu long...)

<!DOCTYPE html>
<html ng-app="fwpApp">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="author" content="FIME SAS">
    <link rel="shortcut icon" href="/favicon.ico">

    <title>Domi'Gestion</title>
                    <link rel="stylesheet" href="/assets/css/bundled.css"/>
        <!--[if lt IE 9]>
        <![endif]-->
    </head>
<body>
    <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
        <div class="container-fluid">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <img src=""quot;"quot; /assets/images/logo-white.png" class="img-responsive col-xs-2 col-sm-3 col-md-3">
                            </div>
            <div class="collapse navbar-collapse" >
                
                <ul class="nav navbar-nav">
                    <li class=""><a href="/app_dev.php/" rel="nofollow noopener noreferrer" target="_blank"><span class="icon-dashboard"></span>Dashboard</a></li>
                                                                                                                                                                                                                                                                                                            <li class="dropdown">
                        <a href="#" rel="nofollow noopener noreferrer" target="_blank" class="dropdown-toggle" data-toggle="dropdown"><span class="icon-icon-rh"></span>Carnet clients</a>
                        <ul class="dropdown-menu" role="menu">
                            <li><a href="/app_dev.php/customer/" rel="nofollow noopener noreferrer" target="_blank"><i class="icon-address-book"></i>Tous les clients</a></li>
                            <li class="divider"></li>
                            <li><a href="/app_dev.php/customer/add" rel="nofollow noopener noreferrer" target="_blank">Ajouter un client</a></li>
                        </ul>
                    </li>
                                                                                                                                                                                    <li class="dropdown">
                        <a href="#" rel="nofollow noopener noreferrer" target="_blank" class="dropdown-toggle" data-toggle="dropdown"><span class="icon-icon-project"></span>Réunions</a>
                        <ul class="dropdown-menu" role="menu">
                            <li><a href="/app_dev.php/meeting/" rel="nofollow noopener noreferrer" target="_blank">Toutes les Réunions</a></li>
                            <li class="divider"></li>
                            <li><a href="/app_dev.php/meeting/add" rel="nofollow noopener noreferrer" target="_blank">Ajouter une réunion</a></li>
                        </ul>
                    </li>
                                    </ul>

                <form class="navbar-form navbar-left" role="search">
                    <div class="input-group form-search">
                        <input type="text" id="searchForm" class="form-control search-query" autocomplete="off" placeholder="Rechercher" fwp-autocomplete fwp-autocomplete-url-source="/app_dev.php/search/customer/url/*searchString*">
                                                                                            </div>
                </form>
                <ul class="nav navbar-nav navbar-right">
                    <li class="dropdown">
                        <a href="#" rel="nofollow noopener noreferrer" target="_blank" class="dropdown-toggle" data-toggle="dropdown"><span class="account">Bonjour kevin</span></a>
                        <ul class="dropdown-menu" role="menu">
                                                        <li><a href="/app_dev.php/profile/" rel="nofollow noopener noreferrer" target="_blank"><i class="icon-cog"></i>Configuration</a></li>
                            <li class="divider"></li>
                            <a href="/app_dev.php/logout" rel="nofollow noopener noreferrer" target="_blank"><i class="icon-lock"></i>Déconnexion</a>

                        </ul>
                    </li>
                </ul>
            </div>
                    </div>
    </nav>

    <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
                                                                                            </div>

        <ol class="breadcrumb">
        <li class="active"><a href="/app_dev.php/customer/" rel="nofollow noopener noreferrer" target="_blank">Liste des clients</a></li>
        <li class="active">Ajouter une nouvelle réunion</li>
    </ol>
    <div id="fwp-content" class="col-md-12">
    <div class="row">
        <div class="col-md-4  col-md-offset-1">
            <h2>Ajouter une nouvelle réunion</h2>
        </div>
    </div>
    <div class="container panel panel-body">
        <form name="meeting" method="post">
        <div class="col-md-12">
            <div class="col-md-10 col-md-offset-1 panel panel-body panel-content panel-info">
                <div class="panel-heading">
                    <h4 class="center">Informations globales</h4>
                </div>
                <div class="panel-body">
                    <div class="row">
                        <div class="col-md-3">
                            <h6><label for="meeting_date" class="required">Date</label></h6>
                        </div>
                        <div class="col-md-7">
                            <div class="input-group date">
                                <input type="text" id="meeting_date" name="meeting[date]" required="required" class="form-control" /><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
                            </div>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-3">
                            <h6><label for="meeting_customer" class="required">Hôtesse</label></h6>
                        </div>
                        <div class="col-md-7">
                            <select id="meeting_customer" name="meeting[customer]"><option value="2">ARTUS Kévin</option><option value="1">CHARLèNE Van Wynsberghe</option></select>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-3">
                            <h6><label for="meeting_address">Adresse</label></h6>
                        </div>
                        <div class="col-md-7">
                            <input type="text" id="meeting_address" name="meeting[address]" />
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-3">
                            <h6><label for="meeting_cp">Code Postal</label></h6>
                        </div>
                        <div class="col-md-7">
                            <input type="text" id="meeting_cp" name="meeting[cp]" />
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-3">
                            <h6><label for="meeting_city">Ville</label></h6>
                        </div>
                        <div class="col-md-7">
                            <input type="text" id="meeting_city" name="meeting[city]" />
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-3">
                            <h6><label for="meeting_nbKm">Nombre de KM</label></h6>
                        </div>
                        <div class="col-md-7">
                            <input type="text" id="meeting_nbKm" name="meeting[nbKm]" />
                        </div>
                    </div>
                    <div class="col-md-11">
                        <div class="col-md-2 right">


                            <button type="submit" id="meeting_save" name="meeting[save]">Create</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <input type="hidden" id="meeting__token" name="meeting[_token]" value="E5mVuaHcz6-Nf0Hydr3-GSreV-Ns_NSCqdn_0OrODHk" />
</form>
    </div>

<script type="text/javascript" src=""quot;"quot;/assets/js/bundled.min.js"></script>


<div id="sfwdt33e73b" class="sf-toolbar sf-display-none"></div><
</body>
</html>
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié par Pitet le 2/02/2017 à 14:24
Sur mon poste ton formulaire envoi bien les données sans problèmes.

Par contre je n'ai pas les scripts du fichier bundled.min.js, le problème vient p-e d'une instruction de ce fichier.
Est-ce que ton formulaire fonctionne si tu désactive temporairement l'utilisation de ce script ?

Comme tu peux le voir également sur la validateur w3c, tu as quelques erreurs de syntaxe html, notamment :
- tu as un caractères "<" en trop juste avant la fermeture </body>
- le lien logout devrait être inclus dans un <li> et pas être un enfant direct de la balise <ul>
- le div id="fwp-content" n'est pas fermé

Bien que ces erreurs n’empêchait pas le formulaire de fonctionner chez moi, il est toujours mieux de les corriger.
0
patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 26 novembre 2023 125
7 févr. 2017 à 11:17
En effet il s'agit du fichier js.
Plus qu'à trouver où dans le fichier manitenant... :/

Merci ;)
0