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 une drupal_goto(request_uri());
, cela 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()
accepte un paramètre $options
à transmettre à la fonction url()
. Vous pouvez passer une chaîne de requête comme celle-ci:
$options = array('query' => array('foo' => 'bar'));
drupal_goto('path', $options);
Cet exemple sera transmis à/path? Foo = bar
C'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.
$options = array('query' => drupal_get_query_parameters());
drupal_goto(current_path(), $options);
Vous vouliez appeler drupal_goto()
au même emplacement que l'actuel.
mysite.com/node/add/dispo?arg1=1&arg2=2
current_path () retourne node/add/dispo; drupal_get_query_parameters () renvoie tous les paramètres $_GET
sauf $_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.
Vous pouvez également utiliser drupal_goto($GLOBALS['base_root'] . request_uri());
Notez qu'il n'est pas identique à drupal_goto(request_uri());
où le paramètre passé est encodé en url comme s'il s'agissait d'un chemin interne drupal, qui est en fait la source de votre problème.