Muszę przekierować użytkownika ze strony z example.com/node/add/dispo?arg1=1&arg2=2 do tego samego typu adresu URL. Ale kiedy po prostu to zrobię drupal_goto(request_uri());
, przekierowuje mojego użytkownika do example.com/node/add/dispo%25F%3C itp.
Próbowałem str_replace, ale to nie działało.
Czy masz jakieś obejście?
drupal_goto()
wystarczy zbudować adres URL na podstawie podanych parametrów, które następnie wywołujeheader()
. Wywoływane są główne różnicedrupal_exit()
, co daje czyste wyjście ze skryptu, a jeśli$_GET['destination']
jest ustawione, zastąpi ścieżkę przekazywaną do funkcji. Ogólniedrupal_goto()
należy stosować, ale zdarzają się sytuacje, w których stare dobreheader()
są bardziej odpowiednie. Tylko zależy od tego, co musisz zrobićTo samo co odpowiedź Clive'a. To poprawne IMO, ale chciałem tylko dodać odpowiedź, która pasuje do Twojego przypadku użycia 1: 1.
Chcesz zadzwonić
drupal_goto()
do tej samej lokalizacji, co bieżąca.current_path () zwraca node / add / dispo; Funkcja drupal_get_query_parameters () zwraca wszystkie
$_GET
parametry, z wyjątkiem tego,$_GET['q']
który jest wewnętrznym węzłem ścieżki / add / dispo.Kiedy dzwonisz
drupal_goto()
, Drupal może odbudować ten sam identyfikator URI, aby wysłać użytkownika.źródło
Możesz także użyć
drupal_goto($GLOBALS['base_root'] . request_uri());
Pamiętaj, że nie jest to to samo, co w
drupal_goto(request_uri());
przypadku, gdy przekazany parametr jest zakodowany tak, jakby to była wewnętrzna ścieżka drupala, która w rzeczywistości jest źródłem problemu.źródło
Właściwie to sprawiłem, że działa
header("location: " . $base_path . request_uri());
źródło