Мне нужно перенаправить пользователя со страницы с example.com/node/add/dispo?arg1=1&arg2=2 на URL того же типа. Но когда я просто делаю a drupal_goto(request_uri());
, он перенаправляет моего пользователя на example.com/node/add/dispo%25F%3C и т. Д.
Я попробовал str_replace, но это не сработало.
Будете ли вы иметь обходной путь?
drupal_goto()
нужно, - это создать URL на основе предоставленных параметров, которые он затем вызываетheader()
сам. Основные отличия заключаются в том, что онdrupal_exit()
вызывается, предоставляя чистый выход сценарию, и, если$_GET['destination']
он установлен, переопределяет путь, который вы передаете в функцию. Как правило,drupal_goto()
следует использовать, но бывают случаи, когда старое доброеheader()
более уместно. Все зависит от того, что вам нужно сделатьЭто так же, как ответ Клайва. Это правильно IMO, но я просто хотел добавить ответ, который подходит для вашего варианта использования 1: 1.
Вы хотели позвонить
drupal_goto()
в то же место, что и текущее.current_path () возвращает узел / add / dispo; drupal_get_query_parameters () возвращает все
$_GET
параметры, кроме$_GET['q']
внутреннего узла пути / add / dispo.Когда вы звоните
drupal_goto()
, Drupal может перестроить тот же URI для отправки пользователю.источник
Вы также можете использовать
drupal_goto($GLOBALS['base_root'] . request_uri());
Обратите внимание, что это не то же самое, что и
drupal_goto(request_uri());
когда переданный параметр urlencoded, как если бы это был внутренний путь drupal, который на самом деле является источником вашей проблемы.источник
На самом деле я сделал это с помощью
header("location: " . $base_path . request_uri());
источник