Form Submit - Wie danach redirect auslösen?
Eingetragen von utaren (60)
am 12.04.2013 - 16:30 Uhr in
am 12.04.2013 - 16:30 Uhr in
Hallo,
ich habe in einem Formular die Funktion für form_submit minimal geändert, damit nach Übermittlung zu einer URL gesprungen wird. Es passiert bloß nichts.Habe es mit $form_state['redirect'] und $form_state['#redirect'] und drupal_goto ausprobiert, leider kein Erfolg. Hat jemand eine Idee?
<?php
if (registration_save($registration)) {
drupal_set_message(t('Registration has been saved.'));
$wrapper = entity_metadata_wrapper('registration', $registration);
$host = $wrapper->entity->value();
// Redirect to registration
if (entity_access('view', 'registration', $registration)) {
/* uta A */
$jahr = substr($host->field__event_date_and_time['und'][0]['value'], 0, 4);
$monat = substr($host->field__event_date_and_time['und'][0]['value'], 5, 2);
$tag = substr($host->field__event_date_and_time['und'][0]['value'], 8, 2);
drupal_set_message($jahr);
drupal_set_message($monat);
drupal_set_message($tag);
$uri = entity_uri('registration', $registration);
$form_state['redirect'] = 'hotel-kurskalender?year=' . $jahr . '&month=' . $monat . '&day=' . $tag ; // nix passiert
$form_state['#redirect'] = 'hotel-kurskalender?year=' . $jahr . '&month=' . $monat . '&day=' . $tag ; // auch nix
drupal_goto('hotel-kurskalender?year=' . $jahr . '&month=' . $monat . '&day=' . $tag); // und wieder nichts
}
// Redirect to host entity
else {
if (entity_access('view', $registration->entity_type, $host)) {
$uri = entity_uri($registration->entity_type, $host);
$form_state['redirect'] = $uri['path'];
}
}
}
?>
Vielen Dank für einen Denkanstoß,
Uta
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo,ich habe jetzt
am 14.04.2013 - 19:31 Uhr
Hallo,
ich habe jetzt folgenden Weg beschritten:
Ich habe mir eine Rule angelegt, die eine Weiterleitung nach "Updating Registration" auslöst. Damit ich die Query für die URL mittels Ersetzungsmustern zusammenbauen kann, habe ich mir properties für "Jahr", "Monat" und "Tag" angelegt. Direkt in der
function registration_form_submit
habe ich mir die Werte aus der Host-Entity geholtZiel ist, das zum Beispiel auf die URL 'hotel-kurskalender?year=2013&month=06&day=3' weitergeleitet wird.
<?php
$jahr = substr($host->field__event_date_and_time['und'][0]['value'], 0, 4);
$monat = substr($host->field__event_date_and_time['und'][0]['value'], 5, 2);
$tag = substr($host->field__event_date_and_time['und'][0]['value'], 8, 2);
$registration->jahr = $jahr;
$registration->monat = $monat;
$registration->tag = $tag;
drupal_set_message('Jahr:' . $registration->jahr);
drupal_set_message('Monat:' . $registration->monat);
drupal_set_message('Tag:' . $registration->tag);
?>
Die Ausgabe enthält die richtigen Werte. Leider wird aber die Weiterleitung in der Rule an einem Zeitpunkt gemacht, wo die Werte noch nicht vorliegen? Ergebnis: Lasse ich mir in der Rule spasseshalber die Ersetzungsmuster per "Nachricht auf der Webseite anzeigen", bekomme ich nur genau den String [registration:jahr] [registration:monat] [registration:tag] ausgegeben, also es sind keine Zahlen darin.
Die zusammengebaute Rule sieht so aus: http://localhost/drupal-7/hotel-kurskalender?year=%5Bregistration%3Ajahr...
Ich beisse mir die Zähne aus, ich wäre so dankbar für Hilfe!
schau mal da...
am 14.04.2013 - 22:07 Uhr
http://api.drupal.org/comment/18139#comment-18139
Sepp