문제

모듈별로 _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);
};
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top