2 votes

Comment empêcher le rechargement d'une page lors du clic sur un bouton zend_form_element_submit ?

Je suis un débutant en ce qui concerne le framework zend. J'ai créé un formulaire avec un bouton de soumission, en utilisant zend_form et zend_form_element_submit. En cliquant sur soumettre, le code effectue une manipulation des données en fonction de l'entrée. Si aucune entrée n'est saisie, rien ne se passe.

Lorsque je clique sur le bouton de soumission, il recharge ma page web même s'il n'y a aucun changement. Y a-t-il un moyen d'empêcher ce chargement de page? Pourrais-je utiliser un zend_form_element_button qui déclencherait un événement? comment pourrais-je le capturer?

Toute aide sera grandement appréciée! Merci.

2voto

drew010 Points 32825

Un bouton de soumission provoquera toujours l'envoi du formulaire, ce qui se traduit généralement par un rechargement de la page, que les données de chacun des éléments du formulaire soient "correctes" ou non.

En utilisant Zend Framework, vous pourriez ajouter un événement JavaScript onsubmit à votre formulaire qui inspecterait les éléments du formulaire et déciderait si le formulaire doit être soumis ou non. Ou vous pourriez utiliser Ajax pour soumettre le formulaire, ce qui ne provoquerait pas le rechargement de la page.

Voici un exemple d'utilisation de onsubmit. Vous créeriez votre formulaire dans le contrôleur, l'assigneriez à la vue, puis dans votre vue, ajouteriez l'attribut onsubmit et le code pertinent.

view.phtml

form->setAttrib('onsubmit', 'return checkForm()');

echo $this->form;
?>

  function checkForm()
  {
      if (form_passes_validation) {
          return true; // le formulaire sera soumis
      } else {
          return false; // le formulaire ne sera PAS soumis (si JavaScript est activé)
      }
  }

Vous devrez concevoir la logique pour form_passes_validation, mais si onsubmit renvoie false, alors le formulaire ne sera pas envoyé.

Gardez à l'esprit que PHP est entièrement côté serveur. Vous ne pouvez pas effectuer de traitement PHP pour déterminer si le formulaire doit être envoyé, tout cela doit être côté client, sinon vous devrez vous contenter du rechargement de la page même si aucune donnée n'est saisie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X