drupal_goto (request_uri ())는 URL에서 '?', '='및 '&'를 대체합니다.


11

example.com/node/add/dispo?arg1=1&arg2=2가있는 페이지에서 동일한 유형의 URL로 사용자를 리디렉션해야합니다. 그러나 단순히을 수행하면 drupal_goto(request_uri());사용자를 example.com/node/add/dispo%25F%3C 등으로 리디렉션합니다.

str_replace를 시도했지만 작동하지 않았습니다.

해결 방법이 있습니까?

답변:


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

옵션 배열에는 이름과 값 쌍을 가진 배열 쿼리가 있습니다. 따라서 대상 변수로 로그인하는 내 코드는 다음과 같습니다. $ options = array ( 'query'=> array ( 'destination'=> 'internal / dashboard') drupal_goto ( 'user', $ options));
파충류

놀라운 것은 새로운 것을 배우게되었습니다
Rishab

13

이것은 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를 다시 작성하여 사용자를 보낼 수 있습니다.


클라이브를 계속 선택하면서 네 대답을 올렸다. 고마워
Gregory Kapustin

0

당신은 또한 사용할 수 있습니다 drupal_goto($GLOBALS['base_root'] . request_uri());

drupal_goto(request_uri());전달 된 매개 변수가 마치 내부 드루팔 경로 인 것처럼 실제로 코드화 되는 위치 와 같지 않습니다 . 이는 실제로 문제의 원인입니다.


-1

실제로 나는 그것을 사용하여 작동하게했다. header("location: " . $base_path . request_uri());


3
이것은 잘못이다. drupal_goto는 당신이 알고있는 어떤 이유로 만들어졌습니다.
AyeshK
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.