[Résolu] Récupérer des données envoyé pour vérification

Catégories:

Bonjour à tous,

Cela fait plus d’un mois que j’utilise Drupal et je le trouve vraiment génial, avec tout pleins de modules intéressants.

Mon job est de créer une salle de classe virtuelle en utilisant un API (d’Adobe Connect Pro). La création en lui-meme ne me pose pas de problème. C’est plutôt au niveau de Drupal :

J’ai créé un type de contenu que j’ai appelé ‘Cours’. Les professeurs doivent y entrer :
- nom du cours
- dates de début et de fin du cours (ajouté par le module Date)
- adresse email de ses élèves (ajouté par le CCK email Fiel) qui doivent être membres

Maintenant, j’aimerais vérifier les données entrées avant que ça écrive dans la BDD :
- vérifier que les élèves sont membres (à l’aide de leur adresse email)
- vérifier que les dates ne sont pas bizarres (exple : date de fin avant date de début, durée de cours supérieure à 4h…)

Comment faire pour les récupérer ?

Lorsque les données sont bonnes, on fait appel à la fonction «Créer une salle de classe» que j’ai codé, puis lorsque la fonction renvoit true, on peut passer à la suite, sinon on affiche une erreur.

Merci d’avance !

Nb : il y a un calendrier qui affiche les noms, dates et auteur du cours grâce au module Views.

#

Salut,

Tu peux le faire à l’aide du hook_nodeapi.

Il y a un moment tu peux valider les informations issues du formulaire et ce avant l’enregistrement.

Salutations

#

Merci de votre réponse très rapide. J’ai regardé la fonction hook_nodeapi avec le lien que vous m’avez passé. Où exactement puis-je y intégrer du code pour vérifier les informations ?

J’ai vu dans node_validate() que les valeurs étaient dans $form, mais je ne sais pas si elles y sont toutes et ni comment les récupérer ($form[‘ ???’]).

#

J’ai trouvé comment récupérer les valeurs. En fait c’est tout bête :
- regarder dans la source le nom du champ de «input» (pour mon cas, c’était name=»field_email[0][email]»)
- récupérer à l’aide de $form (pour mon cas, c’était $form[‘field_email’][‘0’][‘email’][‘#value’])

Salutations à tous ;)

#

Hello
Il me semble que tu peux aussi pouvoir passer par hook_form_alter pour faire cela, mais je je n’ai jamais testé sur drupal 6. L’idée c’est de crocheter le formulaire avec le hook_form_alter et de simplement ajouter une fonctiona validation de ton cru qui te permettra d’afficher des erreurs claires lors de la saisie d’informations par l’internaute -il ne me semble pas que tu puisses faire cela en passant par le hook node_api-.
voir ce lien :

http://api.drupal.org/api/file/developer/topics/forms_api_reference.html…

de ce que je lis, pour ajouter des tests de validation à un formulaire, tu as juste à marquer un truc du genre

<?php
$form
['#validate'][] = 'ma_fonction_de_validation';
?>

dans ton hook_form_alter

et à ensuite à écrire ta fonction en utilisant form_set_error() en retour :

<?php
 
function ma_fonction_de_validation($form, &$form_state) {
  if (
$form_state['values']['name'] == 'coucou') {
   
form_set_error('name', t('le mot "coucou" est interdit. Votre IP a été enregistrée et transmise au FBI.'));
  }
}
?>

#

Cool merci, je vais y jeter un coup d’oeil la semaine prochaine (je taffe le samedi) et modifier mon code, parce que c’était vraiment cochon ma façon de faire !

Bonne journée.

#

Bonjour,

Désolée pour le retard. Je viens de m’initier à la construction de module car j’ai compris qu’il fallait en faire un pour ajouter ses propres fonctions de validation, et surtout que c’est plus propre.

Ca a l’air de bien marcher. Je vous remercie beaucoup.

A la prochaine.

Syndiquer le contenu