Preciso redirecionar o usuário de uma página com example.com/node/add/dispo?arg1=1&arg2=2 para o mesmo tipo de URL. Mas quando eu simplesmente faço um drupal_goto(request_uri());
, ele redireciona meu usuário para example.com/node/add/dispo%25F%3C etc ...
Eu tentei um str_replace, mas não funcionou.
Você teria alguma solução alternativa?
drupal_goto()
faz é criar um URL com base nos parâmetros fornecidos, que ele mesmo chamaheader()
. As principais diferenças são asdrupal_exit()
chamadas, fornecendo uma saída limpa para o script e, se$_GET['destination']
estiver definido, substituirão o caminho que você passa para a função. Geralmentedrupal_goto()
deve ser usado, mas há ocasiões em que o bom e velhoheader()
é mais apropriado. Depende apenas do que você precisa fazerÉ o mesmo que a resposta de Clive. É IMO correto, mas eu só queria adicionar a resposta que melhor se adequa ao seu caso de uso 1: 1.
Você queria ligar
drupal_goto()
para o mesmo local que o atual.current_path () retorna o nó / add / dispo; drupal_get_query_parameters () retorna todos os
$_GET
parâmetros, exceto o$_GET['q']
que é o caminho interno node / add / dispo.Quando você liga
drupal_goto()
, o Drupal pode reconstruir o mesmo URI para o qual enviar o usuário.fonte
Você também pode usar
drupal_goto($GLOBALS['base_root'] . request_uri());
Observe que não é o mesmo que
drupal_goto(request_uri());
onde o parâmetro passado é codificado em url como se fosse um caminho interno do drupal, que é realmente a fonte do seu problema.fonte
Na verdade, eu fiz funcionar usando
header("location: " . $base_path . request_uri());
fonte