Lorsqu’on construit un formulaire à l’aide de CCK on bénéficie de conditions de validation de champs par défaut, afin de contrôler que la saisie de l’utilisateur est bien un nombre, du texte ou de type adresse mail… Prenons l’exemple du module phone qui permet de saisir des numéros de téléphone, celui-ci vérifie lors de la validation que ce qui à été tapé semble bien être un numéro.

Il peut vous arriver d’avoir besoin de vérifier autre chose, par exemple pour un numéro de série vous allez faire un contrôle sur la structure de l’information et le nombre de caractères.

Pour personnaliser la vérification de nos champs de formulaires nous allons ajouter, grâce à un form_alter, un appel à nos fonctions de vérifications.

function mymodule_form_alter($form_id, &$form) {
  // Si vous voulez controler un champs pour un type de contenu en particulier
  $allowed_node_types = array(
    'mymodule1',
    'mymodule2',
  );

  // On vérifie que l'on est bien sur un formulaire de type de contenu et qu'il appartient à la liste précédente.
  if (substr($form_id,-10)=='_node_form' && in_array(substr($form_id, 0, strlen($form_id)-10), $allowed_node_types)) {
    // Note : Vous pouvez ajouter autant de fonctions de vérification que vous en avez besoin
    $form['#validate'][] = '_mymodule_form_validate';
  }
}

Il ne nous reste plus qu’à construire notre fonction de vérification

function _mymodule_form_validate($form_values, $form)
{
  // Vous pouvez alors vérifier votre champ et avertir l'utilisateur d'un éventuel probleme.
  if ($form_values['monchamp'][0]['value'] == 'Quelque chose à vérifier') {
    form_set_error('monchamp', 'Le message d'erreur pour l'utilisateur');
  }
}

Voilà, en quelques lignes nous venons d’ajouter nos propres conditions de validation à notre champ CCK.

2 Responses to Ajouter des conditions de validation à un champ CCK

Avatar

Sylvain

août 23rd, 2010 at 18 h 16 min

Bonjour,
j’ai du mal à comprendre sans exemple surtout pour la partie concernant la fonction de vérification.

Sylvain

Avatar

flyzi

juillet 15th, 2011 at 10 h 29 min

Bonjour,

je n’arrive pas à adapter vodre code à drupal 7.
Comment faire ?

J’ai placé votre code dans template.php (du thème). J’ai également créé un petit module juste avec votre code car votre fonction commence par « mymodule ».

Merci d’avance.

Comment Form



About me

about me

Bienvenue sur mon blog. Sur cet espace j’essaie de partager au mieux ma passion pour le web et actuellement mon engouement pour Drupal. Vous trouverez ici mes découvertes, mes problématiques et les solutions rencontrées.

I am going to DrupalCon London!

Commentaires

  • zanane: Merci Julien ! Bravo pour ton site et ton esprit de partage [...]
  • vikin: Bonjour Julien. Cela fait quelques temps que je souhaite créer un blog en utilisant Drupal. Cer [...]
  • Julien Desrosiers: Bonne idée! Ça me fait penser à The Daily WordPress Reference, qui est un peu comme ça mais q [...]
  • fofiedelly: merci pour les astuces!! en passant ton blog tombe à l'heure meme où je me met sous drupal et il e [...]
  • Julien: Bonjour Non il n'y aura pas de version Française de [...]