Conditionner l'action d'un formulaire

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,

Avec Webform, j'ai créé un formulaire de choix d'un type d'abonnement pour le dépôt d'une annonce.

Je voudrais réaliser le flux suivant :

  • si l'utilisateur est identifié (comment le savoir?), il est dirigé vers la création du contenu
  • si l'utilisateur n'est pas authentifié, il est dirigé vers la création d'un compte utilisateur puis, une fois son compte créé, il est dirigé vers la création du contenu.

Merci d'avance pour votre aide.

Forum : 
Version de Drupal : 

Bonjour,

J'ai trouvé une partie de la solution à tout le flux que je désire mettre en place. Pour savoir si un utilisateur est authentifié et, en fonction, le diriger vers le bon formulaire, dans le hook_form_alter de mon module, j'ai fait ceci :

case 'id_de_mon_form':
   
   
    if($GLOBALS['user']->roles[1] == "anonymous user")
      $form['#action'] = url("user");
    else
      $form['#action'] = url('node/add/annonce');

break;

Alors, il faut faire comme je te l'ai indiqué plus haut : tu rediriges l'action du formulaire d'inscription vers la création du node.

Le seul problème que je n'ai pas encore résolu dans ce cas, c'est que lorsque je redirige l'utilisateur du formulaire d'inscription vers la création du node, j'ai le message d'erreur comme quoi l'utilisateur n'a pas le droit d'effectuer cette opération (à mon avis car pas encore réellement authentifié).