创建新菜单项后,为什么会出现页面未找到错误?

时间:2015-07-31 14:32:40

标签: drupal-6 drupal-routes

在我的模块文件中,我创建了一个新的菜单项

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)。 enter image description here

当我去http://example.com/system/xml/cfa/initialize/1/2/3/4/5时,我得到了#34;找不到页面"。

3 个答案:

答案 0 :(得分:1)

你的代码看起来很花哨,但我想你的页面回调" xmlproject_initialize_cf"应该真的回归。

试试这个:

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

模块名称是" xmlproject"?

答案 1 :(得分:1)

您的代码似乎没有任何问题。 只是好奇,为什么你把数组的最后一个元素保持为'空'(8号后的逗号)

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

此外,数组中还有一个空项(在MENU_CALLBACK之后的额外逗号)

'type' => MENU_CALLBACK,

答案 2 :(得分:1)

正如您在包含路由器路径中的部件数量的数据库number_part列中看到的那样,设置为7(最大可用部件),但菜单回调的部分是9.Which超过{{3}在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,
 );