Redirection personnalisée après l'envoi d'un formulaire
J'ai un formulaire, qui est par défaut un bloc-formulaire d'administration. C'est la forme standard de gens utiliser pour editer le bloc contenu, visibilité etc. Lorsque l'utilisateur enregistre le formulaire, drupal redirige l'utilisateur vers le bloc admin de la page.
Maintenant, je veux prendre l'utilisateur vers une autre page, par exemple. la page d'accueil, après la soumission d'un formulaire d'administration. Il y a plusieurs moyens d'y parvenir, mais drupal recommande l'utilisation de la hook_alter_form méthode décrite ici
J'ai écrit .module fichier appelé 'formdest" contenant les éléments suivants:
function formdest_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'block-admin-configure':
$form_state['redirect'] = '/home';
break;
}
}
et la .le fichier d'information pour l'accompagner:
; $Id: custom.info,v 1.0 2011/01/01 21:55:00 author Exp $
name = formdest
description = form destination
package = Other
core = 6.x
version = "6.x"
project = "custom"
datestamp = "1229018427"
Mon module personnalisé s'affiche dans la liste des modules et je peux l'activer, donc activiting la redirection. Mais quand je l'ai tester, drupal encore me prend pour le bloc admin de la page, au lieu de la page d'accueil..
Il n'y a pas de messages d'erreur dans ni de firebug ou journal système, donc je suis un peu paumé. L'un de vous le codage des dieux a des idées?
source d'informationauteur William Lekatompessy
Vous devez vous connecter pour publier un commentaire.
Ajouter un gestionnaire de soumission en hook_form_alter(), et définir le remplacer.
Sa simple comme 1 2 3
Créer une page Personnalisée avec juste le titre c'est à dire Merci à vous pour votre
de nous contacter. Maintenant, allez dans "chemin d'accès d'URL paramètres" de cette page et
décochez l'option "Automatique alias" et tapez votre personnaliser l'url de la page c'est à dire
merci.
Supprimer des alias d'URL par défaut pour les formulaires web c'est à dire [node:title] et enregistrer les paramètres. De sorte que vous url de la page serait site.com/thank-you
Profitez-en!
J'ai eu du mal à faire une redirection dynamique dans drupal 6 basé sur la provenance de l'utilisateur et voici ce que j'ai trouvé, j'espère que cela aide quelqu'un d'autre:
Évidemment le
$need_to_redirect
doit être remplacé par un interrupteur ou si la vérification en fonction de votreform_alter
préférenceDans le formulaire de modifier la fonction, non pas à l'aide de $form['#submit'][] = ..., au lieu d'utiliser les éléments suivants:
Voir https://www.drupal.org/node/1074616#comment-4218548
Quelque chose qui m'a rendu fou, et même m'a pissé un peu dans tous les réponses que l'utilisation de form_alter pour la redirection REMPLACÉ l'action soumettre et de ne pas simplement AJOUTER à ma nouvelle fonction. Dans mon cas (et de quelques autres threads j'ai lu), j'ai encore besoin d'effectuer l'action du formulaire. Je voulais juste rediriger ailleurs par la suite. Ma redirection fonctionnait bien, mais mon formulaire n'a pas été soumise ou données enregistrées.
Une fois que je suis allé en arrière et de relire le form_alter de la documentation, j'ai réalisé que $form['actions'] est un tableau et ne peut donc accepter d'autres actions dans son tableau! Pour quelqu'un d'autre de la difficulté avec cela, n'utilisez pas le
$form['actions']['submit']['#submit'][] = 'myform_redirect_to_myfunction';
Au lieu de simplement AJOUTER votre rappel à l' $forme de tableau à l'aide de array_shift ou array_unshift (selon quel ordre vous voulez les fonctions à exécuter:
array_shift($form['#submit'], 'myform_redirect_to_myfunction');
J'espère que cela aide quelqu'un d'autre.