_menu()에 Drupal 6개의 절대 와일드카드가 가능합니까?
-
19-09-2019 - |
문제
모듈별로 _menu()의 모든 와일드카드를 처리할 수 있습니까?
다음과 같은 특정 와일드카드에 대해 알고 있습니다.
display/page/%
하지만 경로에는 작동하지 않습니다 display/page/3/andOrderBy/Name
다음과 같은 예상치 못한 양의 매개변수를 처리하려면 어떻게 해야 합니까?
display/page/3/12/45_2/candy/yellow/bmw/turbo
하나 갖고 싶어 display/*
모든 인수를 처리하는 _menu() 경로입니다.
내가 어떻게 해 ?
해결책
Drupal은 추가 URL 요소를 추가 매개변수로 전달합니다. hook_menu
콜백 함수 - 사용 func_get_args() 콜백에서 가져오세요.
따라서 와일드카드를 하나만 등록하면 display/page/%
, 이지만 실제 요청에는 두 가지 추가 요소가 있습니다. display/page/3/andOrderBy/Name
, 콜백은 명시적 매개변수로 '3'을 전달하지만 암시적 추가 매개변수로 'andOrderBy' 및 'Name'도 전달합니다.
콜백 예시:
function yourModuleName_display_callback($page_number) {
// Grab additional arguments
$additional_args = func_get_args();
// Remove first one, as we already got it explicitely as $page_number
array_shift($additional_args);
// Check for additional args
if (!empty($additional_args)) {
// Do something with the other arguments ...
}
// other stuff ...
}
다른 팁
아;) 당신이 옳았습니다
여기 내가 해결한 방법이 있습니다.
function mysearch_menu() {
$items['mysearch/%'] = array(
'page callback' => 'FN_search',
'access callback' => TRUE,
);
return $items;
}
function FN_search()
{
return print_r(func_get_args(),true);
};
제휴하지 않습니다 StackOverflow