example.com/node/add/dispo?arg1=1&arg2=2のページから同じタイプのURLにユーザーをリダイレクトする必要があります。しかし、単にを実行するdrupal_goto(request_uri());
と、ユーザーはexample.com/node/add/dispo%25F%3Cなどにリダイレクトされます。
str_replaceを試しましたが、うまくいきませんでした。
回避策はありますか?
example.com/node/add/dispo?arg1=1&arg2=2のページから同じタイプのURLにユーザーをリダイレクトする必要があります。しかし、単にを実行するdrupal_goto(request_uri());
と、ユーザーはexample.com/node/add/dispo%25F%3Cなどにリダイレクトされます。
str_replaceを試しましたが、うまくいきませんでした。
回避策はありますか?
回答:
drupal_goto()
関数に$options
渡されるパラメーターを受け入れurl()
ます。次のようなクエリ文字列を渡すことができます。
$options = array('query' => array('foo' => 'bar'));
drupal_goto('path', $options);
その例は/ path?foo = barに転送されます
drupal_goto()
提供されたパラメーターに基づいてURLを作成し、それからheader()
それ自体を呼び出します。主な違いは、drupal_exit()
呼び出されることで、スクリプトにクリーンな出口を提供し、$_GET['destination']
設定されている場合、関数に渡すパスをオーバーライドします。通常drupal_goto()
は使用する必要がありますが、古き良きheader()
がより適切な場合があります。あなたが何をする必要があるかによって異なります
これはCliveの答えと同じです。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()は、内部パスnode / add / dispo $_GET
を除くすべてのパラメーターを返します$_GET['q']
。
を呼び出すとdrupal_goto()
、Drupalはユーザーを送信するために同じURIを再構築できます。
実際に私はそれを使用して動作させました header("location: " . $base_path . request_uri());