2012-06-19 2 views
11

Drupal 메뉴 항목의 페이지 인수 중 하나를 옵션 페이지 인수로 설정하려면 어떻게해야합니까? 내가 페이지를 찾을 수 없다는 오류가 나타납니다 나는 세 번째 인수하지 않고 예를 들어 activities_list/(76)를 호출하면Drupal hook_menu 구현의 선택적 인수

나는

$items['activities_list/%/%']=array(
'title callback' => 'activities_list_title', 
'title arguments' =>array(1), 
'description' =>'All the Indicators divided by Coutry', 
'page callback' => 'activities_list', 
'access arguments' => array('access ppi'), 
'page arguments' => array(1,2) 
); 

있습니다. 어떻게 세 번째 매개 변수를 선택적 매개 변수로 설정할 수 있습니까?

감사합니다.

답변

18

생각보다 쉽습니다 :). 경로에 인수를 설정하지 말고 "페이지 콜백"함수에 전달하십시오.

$items['activities_list']=array(
    'title callback' => 'activities_list_title', 
    'description' =>'All the Indicators divided by Coutry', 
    'page callback' => 'activities_list', 
    'access arguments' => array('access ppi'), 
); 

그리고 페이지 콜백 함수는 다음과 같습니다

function activities_list($arg1, $arg2) 
{ 
    // Your code goes here... 
    drupal_set_title(activities_list_title($arg1, $arg2)); 
} 

는 다음과 같은 코드를 사용하여 페이지 제목을 변경할 수 있습니다. (테스트하지, 친절이 일 경우 알려주세요) :

function activities_list_title($arg_1, $arg_2) 
{ 
    $title = ""; 
    // Your code goes here 
    return $title; 
} 

희망이 도움이 ... 무하마드.

+0

감사합니다. 제목 인수가 더 이상 작동하지 않는 문제가 있습니다. –

+0

에 대한 해결 방법을 추가했습니다. 친절하게 그것을 시도하고 그것이 효과가 있다면 알려주십시오. –

+0

콜백 함수에 인수를 전달하지 않으면 경고가 발생합니다. – JCharette

5

나는 그렇게 생각하지 않습니다. 대신 하나의 와일드 카드로 이런 짓을하는 경우 :

$items['activities_list/%']=array(
    'title callback' => 'activities_list_title', 
    'title arguments' =>array(1), 
    'description' =>'All the Indicators divided by Coutry', 
    'page callback' => 'activities_list', 
    'access arguments' => array('access ppi'), 
    'page arguments' => array(1,2) 
); 

이 다음 activities_list/foo는 같은 URL 작동하지만 다음 activities_list/foo는/바 같은 URL이 있다면 당신은 여전히 ​​ 얻을 수 있습니다 bar의 값은 페이지 콜백에 여전히 'page arguments'=> array (1,2)에 의해 해당 함수에 전달되므로 그대로 사용하십시오.

또는 페이지 콜백에서 arg (2)을 사용하여 호출 할 수 있습니다.