Je dois rediriger l'utilisateur d'une page avec example.com/node/add/dispo?arg1=1&arg2=2 vers le même type d'URL. Mais quand je fais simplement un drupal_goto(request_uri());
, il redirige mon utilisateur vers example.com/node/add/dispo%25F%3C etc ....
J'ai essayé un str_replace mais cela n'a pas fonctionné.
Souhaitez-vous une solution?
drupal_goto()
est de construire une URL basée sur les paramètres fournis qu'elle appelle ensuite elle-header()
même. Les principales différences sont ce quidrupal_exit()
est appelé, donnant une sortie propre au script, et s'il$_GET['destination']
est défini, cela remplacera le chemin que vous passez à la fonction. En règle générale,drupal_goto()
il convient de l'utiliser, mais il arrive que le bon vieuxheader()
soit plus approprié. Tout dépend de ce que vous devez faireC'est la même chose que la réponse de Clive. C'est correct IMO mais je voulais juste ajouter la réponse qui convient à votre cas d'utilisation 1: 1.
Vous vouliez appeler
drupal_goto()
au même endroit que l'actuel.current_path () retourne node / add / dispo; drupal_get_query_parameters () retourne tous les
$_GET
paramètres sauf celui$_GET['q']
qui est le nœud de chemin interne / add / dispo.Lorsque vous appelez
drupal_goto()
, Drupal peut reconstruire le même URI auquel envoyer l'utilisateur.la source
Vous pouvez aussi utiliser
drupal_goto($GLOBALS['base_root'] . request_uri());
Notez que ce n'est pas la même chose que
drupal_goto(request_uri());
lorsque le paramètre passé est encodé en url comme s'il s'agissait d'un chemin drupal interne, qui est en fait la source de votre problème.la source
En fait, je l'ai fait fonctionner en utilisant
header("location: " . $base_path . request_uri());
la source