2012-06-19 2 views
11

Как установить один из аргументов страницы в моем пункте меню drupal в качестве необязательного аргумента страницы?Необязательный аргумент в реализации hook_menu Drupal

У меня есть

$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/76, например без третьего аргумента я получит страница не найдена ошибка. Как установить третий параметр как дополнительный?

Спасибо!

ответ

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

Спасибо, сработало. У меня проблема, что аргумент title больше не работает. –

+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) 
); 

Это будет работать на URL, как activities_list/обув, но если вы тогда имели URL как activities_list/Foo/бар вы можете получить значение bar в обратном вызове страницы, поскольку оно по-прежнему передается этой функции 'page arguments' => array (1,2).

Или вы можете позвонить ему, используя arg (2) в своем обратном вызове.

Смежные вопросы