Необязательный аргумент в реализации hook_menu Drupal
Как установить один из аргументов страницы в пункте меню 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)
);
Если я вызову activity_list/76, например, без третьего аргумента, я получу ошибку, не найденную на странице. Как установить третий параметр как необязательный?
Спасибо!
Ответы
Ответ 1
Это проще, чем вы думаете:). Не задавайте никаких аргументов в своем пути и просто передавайте их функции "обратный вызов страницы".
$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;
}
Надеюсь, это поможет... Мухаммад.
Ответ 2
Я не думаю, что ты можешь. Если вы сделали это только с одним шаблоном:
$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-адрес, например activity_list/foo, но если у вас есть URL-адрес, например activity_list/foo/bar, вы все равно можете получить значение bar в обратном вызове страницы, поскольку он все еще передается этой функции с помощью "аргументов страницы" = > array (1,2).
Или вы можете вызвать его, используя arg (2) в обратном вызове страницы.