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