creer un user drupal avec formulaire webform ???

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.

salut, j'ai un formualire webform sur lequel j'enregistre les information de chaque etudiant . moi je veux lorsque je valide un enregistrement . un utilisateur sera crée automatiquement avec le nom comme login et n°cin comme passe sans paseer par la creation d'un user que drupal offre . est ce que c'est possible??

Merçi

Forum : 

Tout dépend de la version de webform que vous utilisée mais dans tout les cas il vous faudra créer un module, si vous êtes en 6.x-2.9 il vous est nécessaire d'utiliser un hook_form_alter(), en revenche si vous êtes en 6.x-3.0 webform possède ses propres hooks et vous pouvez utilisé hook_webform_submission_insert().

En 6.x-2.9 :

<?php
function monModule_form_alter(&$form, &$form_state, $form_id) {
  if (
substr($form_id, 0, 20) == 'webform_client_form_') { // Vous pouvez rajouter le nom du webform si vous en avez plusieur pour qu'il n'y ai pas de conflit.
   
$submit = array_shift($form['#submit']);
   
array_unshift($form['#submit'], $submit, 'monModule_save_user');
  }
}

function monModule_save_user($form, &$form_state) {
 
// Ici le champs correspondant au nom de votre formulaire.
 
$name = $form_state['values']['submitted_tree']['name'];
 
 
// Ici le champs correspondant au cid de votre formulaire.
 
$pass = $form_state['values']['submitted_tree']['pass'];
 
 
$user_account = array(
   
'name' => $name,
   
'pass' => $pass,
   
'init' => $name,
   
'status' => 1,
   
'access' => time(),
  );
 
 
$account = user_save('', $user_account);
}
?>

En 6.x-3.0 :

<?php
function monModule_webform_submission_insert($node, $submission) {
  if (
$node->nid == ma_page_nid) {
   
$name = $submission->data[1]['value'][0]; // Ici le champs correspondant au nom de votre formulaire.
   
$pass = $submission->data[2]['value'][0]; // Ici le champs correspondant au cid de votre formulaire.
   
monModule_save_user($name, $pass);
  }
}

function monModule_save_user($name, $pass) {
 
$user_account = array(
   
'name' => $name,
   
'pass' => $pass,
   
'init' => $name,
   
'status' => 1,
   
'access' => time(),
  );
 
 
$account = user_save('', $user_account);
}
?>

Merçi Beaucoup takeova,
je travaille avec webform 6.X-3.0 beta 5
la methode hook_webform_submission_insert() existe dans le fichier

webform_hooks.php

est ce que je dois mettre ces deux methodes dans le fichiers

ou bien creer un module avec webform_hook.php et mettre ces methodes dedans.
Merçi

j'ai creer un module avec 2 fichiers: .INFO et .MODULE
dans .MODULE j'ai mis le code que vous m'avez donner et dons .INFO les informations sur le module . mais il ne s'affichera pas dans la page module de drupal pour l'activer.

Bonsoir takeova, j'ai activé le module et je sais pas les informations que je devrai mettre dans ce ligne est ce que je dois remplacer value par le form_key(j'ai esayée mais ça marche pas) du champs ou bien le cid du champs

$name = $submission->data[1]['value'][0]; // Ici le champs correspondant au nom de votre formulaire.

Enfaite cette ligne $submission->data[1]['value'][0] doit correspondre au champs dans votre formulaire et à la place de celui-ci dans $submission. Pour connaitre la valeur il faut simplement faire un var_dump($submission) ou dsm($submission) si vous avez le module devel.

bnjr mes amis je suis aussi intéresse par cette astuce,alors j'ai coché le module que je viens de crée et j'aimerai savoir qu'est ce que je doi modifier dans cette ligne "$name = $submission->data[1]['value'][0]"
merci d'avance