Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
328 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

   [Symfony 3.x] Formulaire dans une popup en include

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Symfony 3.x] Formulaire dans une popup en include

n°2314859
mecano31
Posté le 03-05-2018 à 14:10:55  profilanswer
 

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 :
  1. // layout.html.twig
  2. {% block body %}
  3.    {% include '/form.html.twig' %}
  4.    <div>
  5.       <h1>{{ entity.name }}</h1>
  6.       <p>{{ entity.description }}</p>
  7.       <a href="#" id="popup">Afficher popup</a>
  8.    </div>
  9. {% endblock %}
  10. {% block javascripts %}
  11.    <script>
  12.       $(function () {
  13.             $('#popup').on('click', function(){
  14.             // affiche la popup
  15.             });
  16.         });
  17.    </script>
  18. {% endblock %}


 

Code :
  1. // add.html.twig
  2. {% block body %}
  3.    <div>
  4.       <h3>Formulaire</h3>
  5.       {{ form_start(form) }}
  6.          {{ form_errors(form) }}
  7.          {{ form_widget(form.title) }}
  8.          {{ form_widget(form.body) }}
  9.          <input type="submit" value="Valider">
  10.             {{ form_rest(form) }}
  11.       {{ form_end(form) }}
  12.    </div>
  13. {% endblock %}


 

Code :
  1. // FormController.php
  2. class FormController extend Controller
  3. {
  4.    public function addAction(Request $request, $id)
  5.    {
  6.       $entity = new Entity();
  7.       $form   = $this->createForm(FormType::class, $entity);
  8.       if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
  9.          $em = $this->getDoctrine()->getManager();
  10.          $em->persist($entity);
  11.          $em->flush();
  12.          $request->getSession()->getFlashBag()->add('notice', 'Success');
  13.          return $this->redirectToRoute('form_view', array('id' => $entity->getId()));
  14.       }
  15.       return $this->render('AppBundle:Form:add.html.twig', array(
  16.          'form' => $form->createView(),
  17.       ));
  18.    }
  19. }

mood
Publicité
Posté le 03-05-2018 à 14:10:55  profilanswer
 

n°2314887
MaybeEijOr​Not
but someone at least
Posté le 03-05-2018 à 17:11:26  profilanswer
 

Bonjour,
 
Je ne connais pas Symfony mais normalement le mot-clé pour étendre une classe c'est "extends" et non "extend". Cela devrait te retourner une erreur, en fonction de comment est paramétré ton gestionnaire d'erreurs... Donc avant d'aller plus loin il faudrait s'assurer que le problème ne vienne pas de là.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2315432
mecano31
Posté le 17-05-2018 à 17:14:15  profilanswer
 

Bonjour @MaybeEijOrNot,
 
Merci d'avoir pris le temps de me répondre. Il s'agit bien d'une erreur lors du copier-coller au niveau du "mot-clé pour étendre ma classe avec 'extends' et non 'extend'".
J'arrive bien à afficher ma popup maintenant. Mais j'ai un autre souci lors de la validation de mon formulaire en Ajax. J'aimerais quand je valide le formulaire qu'il m'affiche un message de success sur la popup sans recharger la page. Mes données sont bien enregistrés en base de données mais la page se recharge automatiquement pour afficher le message de validation (comportement non souhaiter). Je n'arrive pas à bloquer le rechargement de la page ou même à afficher le message sur la popup pendant quelques secondes et puis la faire disparaître après. Merci !
 
Un exemple du code :
 

Code :
  1. $('#btn-popup').click(function () {
  2.     var route = Routing.generate('affiche_popup');
  3.     $.ajax({
  4.         url: route
  5.     })
  6.     .done(function(data){
  7.         console.log(data);
  8.         if (typeof data !== 'undefined') {
  9.             $('#form-container').html(data);
  10.             $('body').css({'overflow-y': 'hidden'});
  11.             $('.popup-body').css({'overflow-y': 'auto'});
  12.             $('.popup-body').fadeIn();
  13.         }
  14.     })
  15.     .fail(function (err) {
  16.         alert(err.statusText);
  17.     });
  18. });
  19. $('form').submit(function(e) {
  20.     e.preventDefault();
  21.     var $form = $(this);
  22.     var type = $form.attr('method');
  23.     var route = $form.attr('action');
  24.     var datas = $form.serialize();
  25.     $.post({
  26.         type: type,
  27.         url: route,
  28.         data: datas,
  29.         success: function(result) {
  30.             console.log(result);
  31.             $('.formMessage').addClass('success').html(result);
  32.         },
  33.         error: function(err){
  34.             $('.formMessage').addClass('success').html(err);
  35.         }
  36.     });
  37. });


Code :
  1. // FormController.php
  2. class FormController extends Controller
  3. {
  4.     public function addAction(Request $request, $id)
  5.     {
  6.         $entity = new Entity();
  7.         $form  = $this->createForm(FormType::class, $entity, array(
  8.         'action' => $this->generateUrl('form_treatment', array('id' => $id)),
  9.         'method' => 'POST'
  10.         ));
  11.         if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
  12.             $em = $this->getDoctrine()->getManager();
  13.             $em->persist($entity);
  14.             $em->flush();
  15.             $response = new JsonResponse();
  16.             $response->setData(array(
  17.                 'formSuccess' => $this->render('modules/form.html.twig', array(
  18.                     'form' => $form->createView())
  19.                 ),
  20.                 'successMessage' => 'Formulaire validé avec success'
  21.             ));
  22.             return $response;
  23.         } else {
  24.             $response = new JsonResponse();
  25.             $response->setData(array(
  26.                 'formErrors' => $this->render('modules/form.html.twig', array(
  27.                     'form' => $form->createView())
  28.                 ),
  29.                 'errorMessage' => 'Echec de validation'
  30.             ));
  31.             return $response;
  32.         }
  33.     }
  34. }

n°2315437
MaybeEijOr​Not
but someone at least
Posté le 17-05-2018 à 18:09:50  profilanswer
 

Bonjour,
 
La partie JQuery fait apparaître deux requêtes Ajax différentes, laquelle ne va pas ? (a priori la première)
Quel est le HTML (généré) correspondant à ces éléments ?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2315448
mecano31
Posté le 17-05-2018 à 23:26:24  profilanswer
 

Re,
 
La première requête Ajax permet d'afficher ma popup. Cette dernière s'affiche bien avec mon formulaire. Et la deuxième permet de traiter la validation du formulaire. C'est celle-ci qui me pose problème. Car je valide le formulaire j'enregistre bien mes données en base mais je n'arrive pas à faire en sorte de garder la popup ouvert (sans recharger la page) pour afficher une alerte (success ou échec).
 
Cdlt,

n°2315451
MaybeEijOr​Not
but someone at least
Posté le 18-05-2018 à 09:42:08  profilanswer
 

Et tu récupères quelque chose dans la console ici :

Code :
  1. console.log(result);


?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2315453
mecano31
Posté le 18-05-2018 à 10:29:59  profilanswer
 

Le resultat de console.log(result) me renvoie ce : "Formulaire validé avec success" quand je valide le formulaire.


Message édité par mecano31 le 18-05-2018 à 10:39:58
n°2315454
MaybeEijOr​Not
but someone at least
Posté le 18-05-2018 à 10:42:17  profilanswer
 

Et tu n'as aucune erreur dans la console ?
Et si tu essayes d'attacher une id à l'élément form et de le sélectionner par son id plutôt que de sélectionner tous les éléments form ?
 
Sinon je veux bien voir le HTML généré car le preventDefault() devrait interrompre l'évènement submit donc il doit y avoir une subtilité cachée.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2315455
MaybeEijOr​Not
but someone at least
Posté le 18-05-2018 à 10:48:34  profilanswer
 

Au passage,
 

Code :
  1. $('form').submit(function(e) {
  2.     e.preventDefault();
  3.     var $form = $(this);
  4.     var type = $form.attr('method');
  5.     var route = $form.attr('action');
  6.     var datas = $form.serialize();
  7.     $.post({
  8.         type: type,
  9.         url: route,
  10.         data: datas,
  11.         success: function(result) {
  12.             console.log(result);
  13.             $('.formMessage').addClass('success').html(result);
  14.         },
  15.         error: function(err){
  16.             $('.formMessage').addClass('success').html(err);
  17.         }
  18.     });
  19. });


 
Pas la peine de mettre le type de requête si tu utilises $.post puisque c'est un alias de $.ajax pour le type post...


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2315458
mecano31
Posté le 18-05-2018 à 11:06:18  profilanswer
 

Ok c'est noté. J'ai enlevé le type dans le code.
Je n'ai aucune erreur dans la console.
 
Voici le html de mon formulaire:
 

Code :
  1. // form.html.twig
  2.     {% block body %}
  3.        <div>
  4.           <h3>Formulaire</h3>
  5.           {{ form_start(form) }}
  6.              {{ form_errors(form) }}
  7.              {{ form_widget(form.title) }}
  8.              {{ form_widget(form.body) }}
  9.              <input type="submit" value="Valider">
  10.            
  11.              {{ form_rest(form) }}
  12.           {{ form_end(form) }}
  13.        </div>
  14.     {% endblock %}


 
et voici le corps de la popup dans lequel je viens injecter mon formulaire grâce au :

Code :
  1. $('#form-container').html(data);

:
 

Code :
  1. // popup.html.twig
  2. <div class="popup-body">
  3.      .....................
  4.     <div id="form-container"></div>
  5. </div>

 
 
Le formulaire et le corps de la popup sont dans deux fichiers distincts : form.html.twig et popup.html.twig. Je récupère l'url du formulaire à l'aide de :

Code :
  1. var route = Routing.generate('affiche_popup');

qui est passé en ajax et me permet d'inclure mon formulaire dans le body de la popup et afficher le tout en même temps :
 

Code :
  1. $.ajax({
  2.      url: route
  3. })
  4. .done(function(data){
  5.         console.log(data);
  6.         if (typeof data !== 'undefined') {
  7.             $('#form-container').html(data);
  8.             $('body').css({'overflow-y': 'hidden'});
  9.             $('.popup-body').css({'overflow-y': 'auto'});
  10.             $('.popup-body').fadeIn();
  11.         }
  12. });


 
Résultat de la console : {"formSuccess":{"headers":{}},"successMessage":"Formulaire validé avec success"}


Message édité par mecano31 le 18-05-2018 à 12:15:36
mood
Publicité
Posté le 18-05-2018 à 11:06:18  profilanswer
 

n°2315461
MaybeEijOr​Not
but someone at least
Posté le 18-05-2018 à 14:13:04  profilanswer
 

Quand je dis le HTML généré je parle plus du code source de la page à minima ou alors carrément le code interprété quand du contenu dynamique est chargé.
 
Mais bon je pense avoir compris le problème quand même. Ce que tu as dans ta console c'est juste le message disant que tu as généré avec succès ton popup et non que les données du formulaire ont bien été envoyées. Les données de ton formulaire sont bien envoyées mais pas en ajax. En fait tu ajoutes une écoute de l'évènement "submit" :

Code :
  1. $('form').submit(function(e) {
  2.         e.preventDefault();
  3.         var $form = $(this);
  4.         var type = $form.attr('method');
  5.         var route = $form.attr('action');
  6.         var datas = $form.serialize();
  7.         $.post({
  8.             type: type,
  9.             url: route,
  10.             data: datas,
  11.             success: function(result) {
  12.                 console.log(result);
  13.                 $('.formMessage').addClass('success').html(result);
  14.             },
  15.             error: function(err){
  16.                 $('.formMessage').addClass('success').html(err);
  17.             }
  18.         });
  19.     });


Avant d'avoir généré ton popup, l'évènement n'est donc attaché à aucun formulaire.
Il faut en fait placé ce code dans le If suivant :

Code :
  1. if (typeof data !== 'undefined') {
  2.             $('#form-container').html(data);
  3.             $('body').css({'overflow-y': 'hidden'});
  4.             $('.popup-body').css({'overflow-y': 'auto'});
  5.             $('.popup-body').fadeIn();
  6.         }


Ainsi l'évènement "submit" ne sera attaché à l'élément "form" qu'une fois ce dernier créé.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2315462
mecano31
Posté le 18-05-2018 à 14:52:37  profilanswer
 

Désolé pour l'avant dernier message.
Ça marche maintenant.
 
Merci beaucoup !
 
Cdlt,


Message édité par mecano31 le 18-05-2018 à 15:28:09
n°2315519
mecano31
Posté le 22-05-2018 à 10:16:17  profilanswer
 

Bonjour @MaybeEijOrNot,
 
Je confirme ce que tu avais dit dans ton précédent post "Les données de ton formulaire sont bien envoyées mais pas en ajax."
Du coup j'ai du modifié ma requête ajax mais jusqu'à présent je ne vois pas mon message.
 

Code :
  1. if (typeof data !== 'undefined') {
  2.    $('#form-container').html(data);
  3.    $('body').css({'overflow-y': 'hidden'});
  4.    $('.popup-body').css({'overflow-y': 'auto'});
  5.    $('.popup-body').fadeIn();
  6.    $('form').submit(function(e) {
  7.       e.preventDefault();
  8.       var $form = $(this);
  9.       var route = $form.attr('action');
  10.       $.post({
  11.           url: route,
  12.           data: new FormData($form[0]),
  13.           processData: false,
  14.           contentType: false,
  15.           success: function(result) {
  16.                console.log(result);
  17.                $('.formMessage').addClass('success').html(result);
  18.           },
  19.           error: function(err){
  20.                $('.formMessage').addClass('success').html(err);
  21.           }
  22.      });
  23.   });
  24. }

n°2315529
MaybeEijOr​Not
but someone at least
Posté le 22-05-2018 à 10:54:47  profilanswer
 

Et donc maintenant les données sont envoyées en Ajax ?
Le rechargement de la page est bien annulé ?
 
C'est pour savoir s'il n'y a que le message qui déconne ou si c'est encore toute la requête.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2315534
mecano31
Posté le 22-05-2018 à 10:58:39  profilanswer
 

Les données ne sont pas envoyées en Ajax. C'est ça qui déconne je pense.
Mais le rechargement de la page est bien annulé.

n°2315539
MaybeEijOr​Not
but someone at least
Posté le 22-05-2018 à 11:11:19  profilanswer
 

Les données sont envoyées, pas en Ajax et il n'y a pas de rechargement de la page ? o_O
C'est quoi le code HTML de la balise form ?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2315551
mecano31
Posté le 22-05-2018 à 11:49:33  profilanswer
 

C'est une simple vue twig : j'ai préféré illustrer mon code avec un petit exemple du code suivant pour être plus claire car il y a beaucoup de contenus dans mon code qui serait un peu compliqué d'exposer ici et aussi pour faciliter la compréhension. C'est juste un formulaire pour poser une question sur un article avec comme champs : le pseudo de l'utilisateur, le titre et le corps de la question.
 

Code :
  1. {% block body %}
  2.        <div>
  3.           <h3>Formulaire</h3>
  4.           {{ form_start(form) }}
  5.              {{ form_widget(form.pseudo) }}
  6.              {{ form_widget(form.title) }}
  7.              {{ form_widget(form.body) }}
  8.              <button type="submit">Envoyer ma question</button>
  9.           {{ form_end(form) }}
  10.        </div>
  11. {% endblock %}


 
Voici à quoi ressemble le code source :
 

Code :
  1. <form name="appbundle_question" method="post" action="/fr-FR/question_treatment?ref=100" id="questionPopup">
  2.     <label>Mon pseudo</label>
  3.     <input id="appbundle_question_pseudo" name="appbundle_question[pseudo]" required="required" value="" type="text">
  4.    
  5.     <label>Titre</label>
  6.     <input id="appbundle_question_titre" name="appbundle_question[questionTitre]" required="required" placeholder="Titre de ma question" type="text">
  7.    
  8.     <label>Description</label>
  9.     <textarea id="appbundle_question_questionBody" name="appbundle_question[questionBody]" required="required" placeholder="Ma question..." rows="8"></textarea>
  10.     <button type="submit">Envoyer ma question</button>
  11. </form>

n°2315585
MaybeEijOr​Not
but someone at least
Posté le 22-05-2018 à 16:17:05  profilanswer
 

Je ne connais pas trop jQuery mais ta sélection $('form') retourne une collection, je suppose qu'en suite jQuery traite ça avec un forEach. Mais peut-être que ça pose problème, peux-tu me dire ce qu'il en est si tu sélectionnes uniquement ton formulaire :
 

Code :
  1. $('form[name="appbundle_question"]').submit(function(e) {
  2.       e.preventDefault();
  3.       var $form = $(this);
  4.       var route = $form.attr('action');
  5.       $.post({
  6.           url: route,
  7.           data: new FormData($form[0]),
  8.           processData: false,
  9.           contentType: false,
  10.           success: function(result) {
  11.                console.log(result);
  12.                $('.formMessage').addClass('success').html(result);
  13.           },
  14.           error: function(err){
  15.                $('.formMessage').addClass('success').html(err);
  16.           }
  17.      });


 
Et je ne comprends toujours pas si des données sont envoyées ou non actuellement.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2315586
mecano31
Posté le 22-05-2018 à 16:43:31  profilanswer
 

J'ai bien ciblé mon formulaire avec l'Id mais c'est toujours le même résultat :
 

Code :
  1. $('#questionPopup').submit(function(e) {}


 
Mes données sont envoyées car je les enregistre dans ma base de données. Mais elles ne sont pas envoyées en Ajax.
Je crains si le problème ne vient pas de mon controller :
 

Code :
  1. class QuestionController extends Controller
  2. {
  3.     public function newAction(Request $request, $ref)
  4.     {
  5.         $question = new Question();
  6.         $form  = $this->createForm(FormQuestionType::class, $question , array(
  7.               'action' => $this->generateUrl('question_treatment', array('ref' => $ref)),
  8.               'method' => 'POST'
  9.         ));
  10.         if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
  11.             $em = $this->getDoctrine()->getManager();
  12.             $em->persist($question);
  13.             $em->flush();
  14.             $response = new JsonResponse();
  15.             $response->setData(array(
  16.                 'formSuccess' => $this->render('modules/form.html.twig', array(
  17.                     'form' => $form->createView())
  18.                 ),
  19.                 'successMessage' => 'Formulaire validé avec success'
  20.             ));
  21.             return $response;
  22.         } else {
  23.             $response = new JsonResponse();
  24.             $response->setData(array(
  25.                 'formErrors' => $this->render('modules/form.html.twig', array(
  26.                     'form' => $form->createView())
  27.                 ),
  28.                 'errorMessage' => 'Echec de validation'
  29.             ));
  30.             return $response;
  31.         }
  32.     }
  33. }


Message édité par mecano31 le 22-05-2018 à 16:49:56
n°2315598
MaybeEijOr​Not
but someone at least
Posté le 22-05-2018 à 17:59:42  profilanswer
 

Comment sais-tu que ta requête n'est pas envoyée en Ajax ? Parce que là, normalement, si il n'y a pas de rechargement de la page c'est que l'évènement a bien été interceptée. Donc à moins qu'une autre partie du JS intercepte l'évènement (ce qui est très peu probable) je ne vois pas comment il pourrait passer ailleurs.
 
Que dit ta console dans la partie réseau ? Dans l'en-tête de la requête (pas de la réponse) tu retrouves :

Code :
  1. Content-Type : application/x-www-form-urlencoded


ou

Code :
  1. Content-Type : multipart/form-data


?
 
Et je ne vois pas trop comment la problème pourrait venir de ton controller, je ne connais pas Symfony mais là tu n'as que la création de ton pop-up/formulaire. Et pour l'instant il semble formé correctement.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2315629
mecano31
Posté le 23-05-2018 à 09:27:16  profilanswer
 

Dans l'entête de la requête je trouve ceci:  
 
Content-Type:
multipart/form-data; boundary=…----------------8531910721294

n°2315634
MaybeEijOr​Not
but someone at least
Posté le 23-05-2018 à 10:15:07  profilanswer
 

Du coup cela semble bien passer par la requête Ajax car chez moi une requête gérée par le formulaire passe avec l'entête : "Content-Type : application/x-www-form-urlencoded". Donc ce serait plus l'affichage de la réponse qui déconnerait. Par contre, de^puis que tu as changé le code, que retourne ton console.log(result) ?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2315960
mecano31
Posté le 28-05-2018 à 10:39:43  profilanswer
 

Bonjour @MaybeEijOrNot,
 
Désolé pour le retard je travaillais sur un autre sujet.
En fait, je n'arrive pas à afficher mon message d'erreur.
 
Cdlt,

n°2315977
MaybeEijOr​Not
but someone at least
Posté le 28-05-2018 à 15:27:40  profilanswer
 

Et elle est où la partie PHP qui gère cette requête POST ?
Parce que, pour moi, le PHP que tu as mis c'est juste pour générer la pop-up avec le formulaire.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2315978
mecano31
Posté le 28-05-2018 à 15:49:07  profilanswer
 

Hello,
 
Voici la partie qui traite le formulaire :
 

Code :
  1. class QuestionController extends Controller
  2.     {
  3.         public function newAction(Request $request, $ref)
  4.         {
  5.             $question = new Question();
  6.             $form  = $this->createForm(FormQuestionType::class, $question , array(
  7.                   'action' => $this->generateUrl('question_treatment', array('ref' => $ref)),
  8.                   'method' => 'POST'
  9.             ));
  10.             if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
  11.                 $em = $this->getDoctrine()->getManager();
  12.                 $em->persist($question);
  13.                 $em->flush();
  14.                 $response = new JsonResponse();
  15.                 $response->setData(array(
  16.                     'formSuccess' => $this->render('modules/form.html.twig', array(
  17.                         'form' => $form->createView())
  18.                     ),
  19.                     'successMessage' => 'Formulaire validé avec success'
  20.                 ));
  21.                 return $response;
  22.             } else {
  23.                 $response = new JsonResponse();
  24.                 $response->setData(array(
  25.                     'formErrors' => $this->render('modules/form.html.twig', array(
  26.                         'form' => $form->createView())
  27.                     ),
  28.                     'errorMessage' => 'Echec de validation'
  29.                 ));
  30.                 return $response;
  31.             }
  32.         }
  33.     }

n°2315994
MaybeEijOr​Not
but someone at least
Posté le 28-05-2018 à 19:05:02  profilanswer
 

Donc si je comprends bien, c'est le même controller qui permet de gérer la requête pour afficher le pop-up du formulaire et gérer la requête du formulaire ?
 
Si je résume, tout semble indiquer que ta requête Ajax part bien puisque il n'y a pas rechargement de la page et dans la console réseau tu retrouves bien une requête POST avec un content-type "multipart/form-data".
D'après toi, ces données arrivent bien sur ton serveur et sont traitées car elles sont ajoutées à la base de données. (tu as bien vérifié que ce n'était pas un ancien jeu de données qui était déjà dans la base de données par hasard ?)
Et d'après ton controller, que la requête soit bonne ou non, une réponse est envoyée.
 
Mais toi de ton côté tu ne reçois aucune réponse.
 
Là il y a un truc qui nous échappe...
 
Juste une petite idée, ta réponse étant du json, tu peux préciser dans ta requête ajax que tu attends une réponse en json :

Code :
  1. $.post({
  2.           url: route,
  3.           data: new FormData($form[0]),
  4.           processData: false,
  5.           contentType: false,
  6.           dataType: 'json',
  7.           success: function(result) {
  8.                console.log(result);
  9.                $('.formMessage').addClass('success').html(result);
  10.           },
  11.           error: function(err){
  12.                $('.formMessage').addClass('success').html(err);
  13.           }
  14.      });


Mais je ne pense pas que ça puisse bloquer là.
 
Sinon je suis à court d'idées, faut essayer de fouiller dans ta console réseau voir que tout colle. Essaye de voir que ta requête va bien à la bonne adresse, une fois ta requête sélectionnée dans la console, regarde dans l'onglet "Paramètres" que tout correspond, regarde si dans l'onglet "Réponse" tu as une réponse ou non.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

   [Symfony 3.x] Formulaire dans une popup en include

 

Sujets relatifs
Formulaire (de merde)Excel 2016 - Inscription données saisie par formulaire
Javascript et formulaire pdfSymfony 4: config Swift Mailer & SMTP...
Contrôle formulaire : alert suivant oublis de l'utilisateur Formulaire de contact php
lien vers formulaire qui bloque que sur 4/17 pages ????[VB /VBA /VBS] Remplir un formulaire HTML a partir d'un word
Formulaire d'envoi de fichierWord 2016 : Formulaire, insertions automatiques, Macro... ?
Plus de sujets relatifs à : [Symfony 3.x] Formulaire dans une popup en include


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR