Et oui, même ces braves formulaires HTML_QuickForm se rebellent !

Mise en situation

Il arrive parfois qu'un formulaire HTML_QuickForm refuse de se soumettre.
J'entends par la, d'etre validé lors du submit ($O_form->validate()).

Pistes de débugage

1 - Champ caché

Si ce formulaire utilise un template, penser à vérifier que le champ caché est présent (<input name="_qf__{formName}" type="hidden" value="" />)

2 - Règles de validation

Parfois, il peut arriver qu'une règle de validation se cache à notre insu, et qu'aucun message ne s'affiche. Ce qui entraine un figeage incompréhensible de la validation.
Une astuce, une fois le $form->validate() effectué, est d'afficher le contenu de $form->_errors
Exemple :

if ($form->validate()) {
    // traitement
}
var_dump(form->_errors);

Cette variable est un tableau contenant la liste des éléments violant une règle de validation, avec le message d'erreur associé. Et grâce à ses informations, on peut découvrir les coupables :

array(2) {
  ["monElement"]=>
  string(11) "Obligatoire"
  ["monAutreElement"]=>
  string(11) "Obligatoire"
}

En général, il s'agit d'un oubli de l'élement dans le template...
Enfin quoi qu'il en soit, c'est pratique de connaitre cette liste des erreurs de validation :)