Benutzerdefinierte Weiterleitung nach Formular Absenden
Ich habe ein Formular, das ist ein Standard-block-Verwaltung bilden. Es ist die standard-form, die Menschen verwenden, um zu Bearbeiten, block, Inhalt, Sichtbarkeit etc. Wenn der Benutzer speichert das Formular, drupal leitet den user auf die block-admin-Seite.
Nun, ich möchte den Benutzer zu einer anderen Seite, zB. die home-Seite nach dem Absenden einer block-Verwaltung bilden. Es gibt mehrere Möglichkeiten, um dies zu erreichen, aber drupal empfiehlt die Verwendung des hook_alter_form beschriebene Methode hier
Habe ich geschrieben .Modul Datei namens 'formdest', enthält die folgenden:
function formdest_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'block-admin-configure':
$form_state['redirect'] = '/home';
break;
}
}
und die .info-Datei, die Sie begleiten:
; $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"
Meine custom-Modul zeigt sich in der Modul-Liste und ich es aktivieren kann, somit Aktivierung der Umleitung. Aber wenn ich es Teste, drupal immer noch nimmt mich an die block-admin-Seite, anstatt der homepage..
Gibt es keine Fehlermeldungen, weder bei firebug oder system-log, so bin ich ein wenig ratlos. Jeder von Euch coding-Götter hat irgendwelche Ideen?
InformationsquelleAutor William Lekatompessy | 2011-05-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie eine senden-handler in hook_form_alter(), und legen Sie überschreiben es.
Bearbeiten - Recht, Yorirou das snippet funktionierte (meine bisherigen Ansätze auch zu funktionieren schien), problem war das ich nicht verwenden Sie Unterstriche in der Formular-id. Wenn ich Ersetze die Bindestriche durch Unterstriche alles funktionierte wie ein Charme.
kleiner Tipp, die können sparen Sie einige Zeit: wenn form redirect nicht funktioniert, stellen Sie sicher, dass $form_state["rebuild"] = FALSE;
Ich habe eine Frage : wie zur Weiterleitung auf Vorherige Seite? $form_state['redirect'] = ???
InformationsquelleAutor tamasd
Seine so einfach wie 1 2 3
Erstellen Sie eine Benutzerdefinierte Seite mit nur Titel also vielen Dank für Ihre
Kontaktaufnahme mit uns. Nun gehen Sie auf "URL-Pfad-Einstellungen" auf dieser Seite und
entfernen Sie den Haken bei "Automatic alias" und geben Sie Ihre benutzerdefinierte url der Seite, d.h.
Dankeschön.
Entfernen der standardmäßigen URL-Aliase für web-Formulare, d.h. [node:title], und speichern Sie die Einstellungen. So, dass Sie die url der Seite wäre site.com/thank-you
Genießen!
InformationsquelleAutor awan
Ich habe gekämpft, mit dabei eine dynamische Umleitung in drupal 6 basiert auf, wo der Benutzer kam, und hier ist was ich kam mit, ich hoffe, dass es jemandem hilft:
Offensichtlich die
$need_to_redirect
sollte ersetzt werden, mit einem Schalter, oder wenn Sie überprüfen Sie abhängig von Ihrerform_alter
VorliebeInformationsquelleAutor Trey
In der form ändern-Funktion, die nicht mit $form['#submit'][] = ..., und stattdessen mithilfe des folgenden:
Sehen https://www.drupal.org/node/1074616#comment-4218548
InformationsquelleAutor Henry
Etwas, das fuhr mich verrückt und sogar mich Sauer ein wenig in aller Antworten ist, dass mit form_alter für die Umleitung ERSETZT den submit-Aktion und nicht einfach ANHÄNGEN meiner neuen Funktion. In meinem Fall (und ganz wenigen anderen threads gelesen habe), habe ich noch benötigt, um führen Sie die Aktion " Formular. Ich wollte nur umleiten Sie woanders danach. Meine Umleitung war in Ordnung arbeiten, aber mein Formular wurde nicht übermittelt wird oder die Daten gespeichert werden.
Einmal ging ich zurück und Lesen Sie die form_alter Dokumentation, erkannte ich, dass $form['actions'] ist ein array und kann daher akzeptieren, andere Aktionen in das array! Für jemand anderen kämpfen mit diesem, nicht mit der
$form['actions']['submit']['#submit'][] = 'myform_redirect_to_myfunction';
Statt einfach hängen Sie Ihre Rückruf der $form-array mit array_shift oder array_unshift (je nachdem, welche Reihenfolge Sie wollen die Funktionen ausführen:
array_shift($form['#submit'], 'myform_redirect_to_myfunction');
Ich hoffe, dies hilft jemand anderes.
InformationsquelleAutor Bill Dawson