Почему я получаю страницу не найдена ошибка после создания нового пункта меню?

В моем файле модуля я создал новый пункт меню

function xmlproject_menu() 
{
  $items = array();

  //more items here

  $items['system/xml/cfa/initialize/%/%/%/%/%'] = array(
    'page callback' => 'xmlproject_initialize_cf',
    'page arguments' => array(4, 5, 6, 7, 8,),
    'access callback' => TRUE,
    'type' => MENU_CALLBACK,
  );

  return $items;
}

function xmlproject_initialize_cf($session_id, $cart_id, $pid, $rid, $partner_id)
{
  //some code here
}

Я попытался зайти в admin/build/modules, devel/menu/reset и admin/settings/performance, чтобы очистить кеш. Я могу видеть пункт меню в базе данных (menu_router).

Когда я захожу на http://example.com/system/xml/cfa/initialize/1/2/3/4/5 я получаю "Страница не найдена".

3 ответа

Ваш код кажется просто денди, но я полагаю, что обратный вызов вашей страницы "xmlproject_initialize_cf" должен действительно что-то возвращать.

Попробуй это:

function xmlproject_initialize_cf($session_id, $cart_id, $pid, $rid, $partner_id)
{
  // Your Code
  return 'Hello world!';
}

Имя модуля называется "xmlproject"?

Похоже, что-то не так с вашим кодом. Просто любопытно, почему вы сохранили последний элемент массива как "пустой" (запятая после числа 8)

'page arguments' => array(4, 5, 6, 7, 8,),

Также в массиве есть дополнительный пустой элемент (дополнительная запятая после MENU_CALLBACK)

'type' => MENU_CALLBACK,

Как вы видите в своей базе данных number_part столбец, который содержит Количество частей в пути к маршрутизатору, устанавливается на 7(максимально доступная часть), но ваши части обратного вызова меню равны 9. Что больше, чем MENU_MAX_PARTS, доступных в drupal 6. Вот почему вы получаете Page not foundПросто уменьшите размер вашего пункта меню, и вы готовы. Например:

$items['initialize/%/%/%/%/%'] = array(
    'page callback' => 'xmlproject_initialize_cf',
    'page arguments' => array(4, 5, 6, 7, 8),
    'access callback' => TRUE,
    'type' => MENU_CALLBACK,
 );
Другие вопросы по тегам