drupal_goto(request_uri())替换URL中的我的'?','='和'&'


11

我需要将用户从具有example.com/node/add/dispo?arg1=1&arg2=2的页面重定向到相同类型的URL。但是当我简单地执行a时drupal_goto(request_uri());,它将用户重定向到example.com/node/add/dispo%25F%3C等。

我尝试了str_replace,但没有成功。

您有什么解决方法吗?

Answers:


32

drupal_goto()接受$options要传递给url()函数的参数。您可以像这样传递查询字符串:

$options = array('query' => array('foo' => 'bar'));
drupal_goto('path', $options);

该示例将转发到/ path?foo = bar


我猜它比标题更干净(位置?
Gregory Kapustin

2
实际上,这取决于您是否看代码drupal_goto(),只是根据提供的参数构建一个URL,然后由它header()自己调用。主要的区别在于,它drupal_exit()被称为给脚本一个干净的出口,如果$_GET['destination']被设置,它将覆盖您传递给函数的路径。通常drupal_goto()应该使用,但在某些情况下,年龄header()较大的人更合适。只取决于您需要做什么
Clive

好,谢谢。我将为此使用标头,但我仍然认为drupal_goto更干净。
Gregory Kapustin 2013年

请注意,options数组具有带有名称和值对的数组查询。因此,我使用目标变量登录的代码如下所示:$ options = array('query'=> array('destination'=>'internal / dashboard')drupal_goto('user',$ options));
reptilex

令人惊讶的是要学习新的东西
Rishab

13

这与克莱夫的答案相同。这是正确的IMO,但我只是想添加适合您的用例1:1的答案。

$options = array('query' => drupal_get_query_parameters());
drupal_goto(current_path(), $options);

您想呼叫drupal_goto()与当前位置相同的位置。

mysite.com/node/add/dispo?arg1=1&arg2=2

current_path()返回node / add / dispo; drupal_get_query_parameters()返回$_GET$_GET['q']内部路径节点/添加/ 分配外的所有参数。

当您调用时drupal_goto(),Drupal可以重建相同的URI以将用户发送到。


太好了,因为我选择了克莱夫(Clive),所以我提高了您的答案。谢谢大家。
Gregory Kapustin 2013年

0

您也可以使用 drupal_goto($GLOBALS['base_root'] . request_uri());

请注意,这drupal_goto(request_uri());与传递的参数使用urlencode的方式不同,就好像它是内部drupal路径一样,这实际上是问题的根源。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.