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に転送します
これはクライヴの答えと同じです。正しい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を再構築できます。
drupal_goto($GLOBALS['base_root'] . request_uri());
を使用することもできます
渡されたパラメーターが内部のdrupal実際に問題の原因である)パスであるかのようにurlencodeされているdrupal_goto(request_uri());
とは異なることに注意してください。