Необязательный аргумент в реализации 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) в обратном вызове вашей страницы.

Другие вопросы по тегам