Ajouter des conditions de validation à un champ CCK

Ajouter des conditions de validation à un champ CCK

04 Aug 2010 |  Drupal

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.

Julien Dubreuil

Vous avez une idée, un projet web à réaliser ?

Ensemble, mettons en oeuvre sa réussite. Je vous accompagne dans vos projets, depuis l'élaboration du cahier des charges jusqu'à la mise en production. Pour plus d'information n'hésitez pas à me contacter.

Contactez-moi