Mon module ne semble pas fonctionner

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 a tous,

Je souhaiterais rediriger mon internaute sur un autre site apres qu'il est rempli un formulaire

J'ai crée une page webform qui a pour id "webform-client-form-1" (obtenu dans le code source)

J'ai ajouté mon module, qui devrait normalement modifier le submit ?

<?php
function custom_module_form_alter(&$form, $form_state, $form_id) {
  if ($form_id == 'webform-client-form-1') {
    // Overwrite the default node submission handler with our own.
    $form['buttons']['submit']['#submit'][] = 'my_module_example_form_submit';
  }
}
function my_module_example_form_submit($form, &$form_state) {
  $form_state['redirect'] = 'https://monsiteexterieur.com';
}

Mais rien ne semble se passer, je débute dans la création de module et je penses que j'ai oublié qqchose.

Si quelqu'un pouvait m'orienter un peu la dessus ?

Merci par avance

Aure

Salut
C'est pas l'id qu'il faut mettre ici mais plutot le value donc un truc genre webform_client_form_1
Sinon le plus simple est de mettre un print $form_id avant pour savoir les differentes valeur que tu as.

Effectivement le formulaire id est bien webform_client_form_1

Par contre apres avoir modifié dans mon code, il ne se passe rien du tout.
Le webform est toujours geré dans drupal et aucune redirection n'est faite.

J'ai l'impression que mon module n'est pas pris en compte.

Cordialement

Aure

La redirection que tu veux faire est juste apres la validation du formulaire ?
Parce que dans ce cas il suffit d'utiliser #redirect $form['#redirect'] = 'node/123' directement ds le hook_form_alter.
Par contre je suis pas sur que tu puisses rediriger vers un site externe vu que ca utilise les memes parametres que drupal_goto

Merci pour ta réactivité.

J'ai teste pas mal de chose depuis et j'ai effectivement utilisé le $form['#redirect'] est la ca passe correctement ma redirection se fait bien (maseltov ;-)

function domaine_form_alter(&$form, $form_state, $form_id) {
  switch ($form_id) {
    case 'webform_client_form_1':
        $form['#redirect'] = 'https://monsiteesxterieur.com/';
break;
  }
}

Seul subtilité a présent c'est comment je peux faire passer des variables dans cette url ?

Ex :
Un champs de formulaire qui est une checkbox Oui/Non :
renvoi vers l'url https://monsiteesxterieur.com/?box=OUI&.....

Merci beucoup

La documentation de drupal_goto te l'explique ;)
Cependant, si tu mets ton redirect ds le form_alter a ce moment la tu n'as pas les valeurs de tes checkboxes et autres...
Du coup je pense qu'il faut gerer ton traintement au niveau du submit et essayer de voir ce qui va pas dans ton premier bout de code.
Mais bon ca j'ai jamais fait...

Merci pour tout, j'ai pu m'en sortir grace a toi.

Voici le code qui fonctionne si ca peut aider :

Ce bout de code permet de renvoyer un formulaire sur un autre site apres avoir cliqué sur 'submit' avec en variables les champs soumis par l'utilisateur dans le formulaire (pour moi les champs etaient de la forme submitted[nom]...)

<?php
function mon_module_form_alter(&$form, $form_state, $form_id) {
  if ($form_id == 'webform_client_form_1') {
    $form['submit']['#submit'][] = 'ma_fonction_example_form_submit';
  }
}

function ma_fonction_example_form_submit($form, &$form_state) {

$variable1 = $form['submitted'][nom]['#value'];
$variable2 = $form['submitted'][extensions]['#value'];
$variable3 = $form['submitted'][action]['#value'];

$form_state['redirect'] = 'https://monsiteexterieur.com/?var1='.$variable1.'&var2='.$variable2.'&var3='.$variable3;
}

Bonne journée