Redirection après création d'un sujet de discussion

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,

Je suis dans un impasse, j'essaye de rediriger l'utilisateur après la création d'un sujet de discussion mais sans succès. Je vous montre les différentes méthodes que j'ai utilisé :

  • Méthode 1 (non recommandé d'après mes recherches) :

    <?php
    function monmodule_form_alter(&$form, $form_state, $form_id)
    {
      switch (
    $form_id) {
        case
    'forum_node_form':
         
    $form['#submit'][] = 'monmodule_forum_submit';
          break;
      }
    }

    function
    monmodule_forum_submit($form, &$form_state)
    {
      
    drupal_goto('le-node-créé');
    }
    ?>
  • Méthode 2 (fonctionne pas) :

    <?php
    function monmodule_form_alter(&$form, $form_state, $form_id)
    {
      switch (
    $form_id) {
        case
    'forum_node_form':
         
    $form['#submit'][] = 'monmodule_forum_submit';
          break;
      }
    }

    function
    monmodule_forum_submit($form, &$form_state)
    {
      
    $form_state['redirect'] = 'le-node-créé';
    }
    ?>
  • Méthode 3 (fonctionne pas) :

    <?php
    function monmodule_form_alter(&$form, $form_state, $form_id)
    {
      switch (
    $form_id) {
        case
    'forum_node_form':
         
    $form['#redirect'] = 'le-node-créé';
          break;
      }
    }
    ?>

Pouvez-vous m'aidez s'il vous plait ?

Forum : 
Version de Drupal : 

Effectivement, le drupal_goto n'est pas à utilisé pour les formulaires.

La bonne solution devrait être la methode 3, et la syntaxe semble correct. Es tu sur que l'id que tu souhaites changé est bien le forum_node_form?

Merci de m'avoir répondu,

Et bien pour vérifier l'id, j'ai tous simplement fais un echo/print de $form_id. Quand j'arrive sur page de création d'un nouveau sujet de discussion j'ai bien forum_node_form qui s'affiche.

utiliser form_alter et $form['#redirect'] fonctionne normalement, j'ai déjà utilisé cette méthode. C'est bien la manière qui me parait la plus logique pour modifier la chemin de destination du formulaire. Je fais ça sur drupal 5 sans probleme.

passer par un hook submit me parait un peu alambiqué alors que le paramètre redirect du formulaires sert justement à ça.

Je ne sais pas pourquoi ton exemple ne marche pas, essaie d'altérer une autre partie du formulaire voir si ça marche, comme changer le label du champ titre par exemple. Au moins tu sauras si ton hook fonctionne comme il faut pour commencer.