it-swarm.com.de

drupal_goto (request_uri ()) ersetzt mein '?', '=' und '&' in der URL

Ich muss den Benutzer von einer Seite mit example.com/node/add/dispo?arg1=1&arg2=2 auf denselben URL-Typ umleiten. Wenn ich jedoch einfach eine drupal_goto(request_uri()); ausführe, wird mein Benutzer zu example.com/node/add/dispo%25F%3C usw. weitergeleitet.

Ich habe versucht, einen str_replace, aber es hat nicht funktioniert.

Würden Sie eine Problemumgehung haben?

11

drupal_goto() akzeptiert einen $options - Parameter, der an die Funktion url() übergeben wird. Sie können eine Abfragezeichenfolge wie folgt übergeben:

$options = array('query' => array('foo' => 'bar'));
drupal_goto('path', $options);

Dieses Beispiel wird an/path? Foo = bar weitergeleitet

32
Clive

Dies ist das gleiche wie Clives Antwort. Es ist richtig, IMO, aber ich wollte nur die Antwort hinzufügen, die zu Ihrem Anwendungsfall 1: 1 passt.

$options = array('query' => drupal_get_query_parameters());
drupal_goto(current_path(), $options);

Sie wollten drupal_goto() an derselben Stelle wie die aktuelle aufrufen.

mysite.com/node/add/dispo?arg1=1&arg2=2

current_path () gibt node/add/dispo zurück; drupal_get_query_parameters () gibt alle $_GET Parameter zurück, mit Ausnahme von $_GET['q'], dem internen Pfadknoten/add/dispo.

Wenn Sie drupal_goto() aufrufen, kann Drupal) denselben URI neu erstellen, an den der Benutzer gesendet werden soll.

13
AyeshK

Sie können auch drupal_goto($GLOBALS['base_root'] . request_uri()); verwenden

Beachten Sie, dass es nicht dasselbe ist wie drupal_goto(request_uri());, bei dem der übergebene Parameter urlencodiert ist, als wäre es ein interner drupal Pfad), der tatsächlich die Ursache Ihres Problems ist.

0
Anonymous