Drupal_goto oder ähnliches in form_submit
am 21.01.2012 - 17:18 Uhr in
Hallo zusammen,
ich möchte gerne folgendes lösen:
In einem Formular submit sollen verschiedene Befehle ausgeführt werden und danach ein bestimmter Link aufgerufen werden. Das Problem ist, dass es sich um keinen http-Link handelt sondern um einen eigenen Protokoll-Handler.(Nach Beschreibung von hier http://joergnapp.de/programme-durch-den-browser-starten/)
Über einen Protokoll-Hander wird bei mir über den Link foo:bar ein lokales Programm geöffnet. Dies funktioniert auch, wenn ich einen normalen Link einfüge.
Ich möchte dies jedoch im Submit eines Formulares unterbringen, und da kenne ich nur drupal_goto()
Derzeit sieht das folgendermaßen aus:
function meinform_form_submit($form, &$form_state) {
//....führe irgendwas aus....
$link=foo:bar;
drupal_goto($link);
}
Doch leider wird mein foo:bar nicht richtig aufgerufen. Nach dem Submit kommt man auf http://www.meineseite.de/foo:bar , wobei der Doppelpunkt als %3A angezeigt wird.
Ich wäre euch echt dankbar, wenn ihr mir einen Tipp für mein Problem geben könnten.
DANKE.
Grüße
tick313
- Anmelden oder Registrieren um Kommentare zu schreiben
Du kannst die Weiterleitung
am 21.01.2012 - 18:47 Uhr
Du kannst die Weiterleitung auch über $form_state['redirect'] im hook_form_submit mit übergeben.
http://api.drupal.org/api/drupal/includes--form.inc/group/form_api/7
weitere Beispiele für die Nutzung der Form-API:
Drupal 6: http://api.drupal.org/api/examples/form_example--form_example.module/gro...
Drupal 7: http://api.drupal.org/api/examples/form_example--form_example.module/gro...
SteffenR
Hallo Steffen,danke für
am 21.01.2012 - 19:35 Uhr
Hallo Steffen,
danke für Deine schnelle Antwort.
Wenn ich das mit $form_state versuche, dann versucht er trotzdem die URL http://www.meineseite.de/foo%3Abar aufzurufen. Ist also das gleiche Ergebnis wie bei drupal_goto().
Bis jetzt habe ich es nur hinbekommen, wenn ich unabhängig vom Formular einen
<a href>-Link angegebe (echo '<a href="foo:bar">testlink</a>';)
Evtl. noch eine Idee, wie ich das so in mein Formular-Submit bekommen kann?
Viele Grüße
Holger
Bei uns gab es mal folgendes
am 22.01.2012 - 00:14 Uhr
Bei uns gab es mal folgendes Problem:
Wir haben eine Webform, welche in div. Nodes eingebunden wird. Nachdem Submit sollte der Benutzer wieder
auf dem ursprünglichen Node landen - es ging aber immer irgendwie in den Schilf.
Die Lösung, die für uns nun funktioniert:
- Wir merken uns die $nid über ein Cookie oder eine Session-Variable (Cookie funktioniert auch mit jquery)
- Mit einer Anpassung in HOOK_form_alter(&$form, $form_state, $form_id) holen wir die $nid wieder raus und machen
dies im Falle der Webform:
if ($nid > 0) $form['#redirect'] = 'node/'.$nid;
Vielleicht funktioniert diese Stelle für Dich analog.
Hallo, ich habe es jetzt auch
am 22.01.2012 - 14:43 Uhr
Hallo,
ich habe es jetzt auch damit versucht, aber irgendwie funktioniert das leider auch nicht :-(
Kein redirect, kein goto, auch nicht Location: im Header
Kann es sein, dass ich das wirklich nur mit einem html-Link aufrufen kann?
Viele Grüße
Holger
tick313 schrieb Hallo, ich
am 22.01.2012 - 17:59 Uhr
Hallo,
ich habe es jetzt auch damit versucht, aber irgendwie funktioniert das leider auch nicht :-(
Kein redirect, kein goto, auch nicht Location: im Header
Kann es sein, dass ich das wirklich nur mit einem html-Link aufrufen kann?
Viele Grüße
Holger
Wie hast du dies denn in dein Modul eingebunden - da müsste man schon ein bissel mehr Code sehen - eigentlich sollte eine Weiterleitung über $form_state['redirect'] ohne Probleme möglich sein.
SteffenR