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.