Submitted by cmoirness on
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
Permalien Soumis par tostinni le 15 Février, 2010 - 15:33
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
Permalien Soumis par cmoirness le 15 Février, 2010 - 18:00
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
Permalien Soumis par tostinni le 15 Février, 2010 - 18:27
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
Permalien Soumis par cmoirness le 15 Février, 2010 - 18:35
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
Permalien Soumis par tostinni le 15 Février, 2010 - 19:27
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
Permalien Soumis par cmoirness le 16 Février, 2010 - 11:31
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