나는이 예제를 전부 조사했지만 어떤 것도 찾지 못했습니다. profile과 같은 쿼리 인수를 포함하는 path의 별칭을 만들려고합니다? arg1 = 113.Drupal 7 쿼리 인수가있는 path_save
path_save()
에 경로의 일반 문자열 표현을 제공하거나, url()
을 제공하면 문제가되지 않습니다.
url('profile', array('query' => array('arg1' => $uid)))
어느 쪽이든, ? 및 =은 URL 별칭 관리 페이지에 이스케이프 문자로 표시됩니다. 이는 경로를 찾을 수 없다는 것을 의미합니다.
어떻게 보관할 수 있습니까? 그리고 도망친 것?
12/19/12 편집 1 : 더 큰 맥락은 Profile2 프로필이 저장 될 때 내가 별칭을 설정 (즉, mymodule_profile2_presave에()) 시도하고 있다는 것입니다 - 내가해야 할 때 그건 별칭을 프로그래밍 방식으로 설정하는 데 필요한 모든 정보
12/19/12 편집 2 : 그냥 삽입 문제가 아니라는 것을 알았습니다. url_alias 테이블에는 실제로 이스케이프 처리되지 않은 문자가 있습니다. 문제는 Drupal이 경로를 사용하기 전에 urldecode하지 않는다는 것입니다 ...
12/20/12 편집 3 : 경로 별명 대신 Redirect을 사용하여 해결책을 찾았습니다. Redirect는 쿼리 문자열을 적절하게 디코딩합니다!
덕분에, @kiamlaluno,하지만 불행히도, hook_inbound_alter는() 나는 path_save()를 호출 할 때 내가 만드는거야 별칭으로 호출되지 않습니다 - 적어도, 문맥에있는 내가 전화 했어 그것. 더 큰 컨텍스트는 [Profile2] (http://drupal.org/project/profile2) 프로필이 저장 될 때 (즉, mymodule_profile2_presave()) 별칭을 설정하려고 할 때입니다. 별칭을 프로그래밍 방식으로 설정하는 데 필요한 모든 정보가 있습니다. mymodule_url_inbound_alter()를 추가했지만 프로필을 저장할 때 사용자 프로필을 편집하기위한 경로와 함께 호출됩니다. – LEN
죄송합니다. 나는 그 부분에서 분명하지 않았습니다. 'hook_inbound_alter()'는 URL을 Drupal에서 사용하기 전에 변경하는데 사용됩니다. 내가 사용하고있는 코드는 node/93? uid = 1과 같은 경로를 node/93으로 변경하고'$ _GET [ 'uid']를 1로 설정하는 데 사용된다. path_save() 저장하지만 노드/93과 같은 경로를 피합니까? 93? uid = 1은 ID가 93? uid = 1 인 노드를 찾는 데 사용됩니다. – kiamlaluno
문제 없습니다. 원래 게시물을 만들었을 때 더 큰 컨텍스트를 제공 했어야했습니다 (지금 해당 정보를 게시물에 추가 할 것입니다). – LEN