In einem meiner Formulare versuche ich, eine festzulegen, $form_state['redirect']
damit das Formular an dieses Ziel gesendet wird, nachdem der Benutzer auf eine der Aktionsschaltflächen geklickt hat.
Wenn ich $form_state['redirect']
die Umleitung vor und nach dem Hinzufügen überprüfe, ist sie vor und nach dem Hinzufügen NULL und enthält das richtige Array. So richte ich die Umleitung ein:
$form_state['redirect'] = array(
'my/custom/path/' . $nid,
array('query' => drupal_get_destination()),
);
Ich möchte das Ziel aus dem Formular erhalten, das der Benutzer zum nächsten Pfad anzeigt (aus diesem Grund rufe ich auf drupal_get_destination()
, der ein Array mit 'destination' => 'some/path/here'
inside zurückgibt .
Da sich bereits ein Ziel im Pfad des aktuellen Formulars befindet, wird das Formular anscheinend an dieses Ziel weitergeleitet, unabhängig davon, was ich in meinen eigenen Formularübermittlungs-Handler eingegeben habe (siehe obigen Code). Ich habe sogar versucht, drupal_goto () zu verwenden, und das hat den Benutzer auch nicht umgeleitet.
quelle
Vielen Dank dafür, aber aus irgendeinem Grund hat das nicht funktioniert, als ich es ausprobiert habe. Ich habe einen schwerwiegenden Fehler erhalten - die in der obigen Beispielantwort gesendeten Daten erfüllen nicht die Anforderungen von
drupal_goto()
Es mag sein, dass diese Antwort ziemlich alt ist, aber ich konnte sie stattdessen zum Laufen bringen:
Ich weiß, dass dies gegen diese Notiz verstößt:
In diesem Fall möchten Sie die Variable jedoch unbedingt überschreiben. Sie würden diesen Wert nicht festlegen, wenn Sie die festgelegten Werte anderer Module nicht ignorieren möchten. Auch ich denke du musst wegen dem Weg
drupal_goto()
mit dem Abfrageparameter arbeiten. Dies kann auch der Grund sein, warum die ursprüngliche Antwort schwerwiegende Fehler auf meiner Website verursachte.quelle
$form_state['redirect']
Sie unter bestimmten Umständen die WSOD vollständig überschreiben möchten oder eine WSOD mit konkurrierenden Weiterleitungen erhalten.set form #action
quelle
drupal_goto()
inhook_node_insert()
die Dinge vermasseln (weildrupal_goto()
Anrufedrupal_exit()
von den neuen Knoten zu verhindern gespeichert werden).