Affichage/Gestion des erreurs dans un module

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

J'ai crée un module, et je fais un controle des erreurs dans le formulaire que contient mon module.
Sur certaine page ( avec page.module) du site que j'ai récupéré, lors qu'il y a des erreurs dans le formulaire par exemple un mauvais format de mail. Les erreurs s'affiches dans un cadre au debut du formulaire.

J'ai crée mes contrôles d'erreurs:

function submit_city_form_validate( $id , $form ) {
    if ( $error = submit_city_validate_mail( $form['email'] ) ) {
        form_set_error( 'email' , $error );
  }
  if ( $error = submit_city_validate_country( $form['country'] ) ) {
       form_set_error( 'country' , $error );
    }
  if ( $form['country'] == 3 ) {
       if ( $error = submit_city_validate_state1( $form['state1'] ) ) {
         form_set_error( 'state1' , $error );
     }
  }
  if ( $error = submit_city_validate_check2( $form['checkbox2'] ) ) {
      form_set_error( 'checkbox2' , $error );
  }
}

Lorsque je fais l'erreurs les zones s'entoure en rouge, mais je n'ai pas de texte (retourné par chaque fonction) qui s'affiche en haut.

J'aimerai savoir ce que je dois inserer pour afficher les erreurs dans le module ou dans le page qui appelle ce module.

merci

Forum : 
Version de Drupal : 

Ça devrait pourtant marcher, le deuxième paramètre de form_set_error est affiché via drupal_set_message, donc avant le formulaire (Documentation de form_set_error).

Tu peux essayer de rajouter des drupal_set_message pour voir s'ils s'affichent correctement. Tu peux aussi regarder du côté de ton thème s'il n'y a rien qui empêcherait l'affichage des messages.

Regarde le fichier page.tpl.php dans ton thème, il doit y avoir une ligne qui ressemble à :

<?php
 
print $messages
?>

Cette ligne affiche tous les messages, pas seulement les messages d'erreur.

Tu peux ajouter la ligne suivante dans chacun des fichier .tpl.php de ton thème :

<?php
print '<span style="background:yellow;">TOTO.tpl.php</span>';
?>

en remplaçant TOTO par le nom du template à chaque fois.

Ensuite, tu visualises une page de ton site et tu verras en jaune fluo le nom de tous les templates appelés.