hook_menu()开头的通配符

时间:2015-01-14 11:58:48

标签: php drupal-7

使用hook_menu()函数,我使用以下代码正常工作:

function mymodule_menu(){
    $items = array();
    $items['assessment/%'] = array(
        'page callback' => 'mymodule_assessment_page',
        'page arguments' => 'array(1),
        'access arguments' => array('access content'),
        'file' => 'pages/mymodule.assessment.inc',
        'type' => MENU_CALLBACK,
    );
}

然而,当我尝试以下(清除缓存等)后,我得到一个页面未找到错误。

function mymodule_menu(){
    $items = array();
    $items['%/assessment'] = array(
        'page callback' => 'mymodule_assessment_page',
        'page arguments' => 'array(0),
        'access arguments' => array('access content'),
        'file' => 'pages/mymodule.assessment.inc',
        'type' => MENU_CALLBACK,
    );
}

我搜索了谷歌,我没有看到没有能够在网址的前面放置路径通配符。

任何人都可以注意到我在这里做错了吗? 或者是drupal不支持以通配符开头的路径的情况。

Anyhelp将受到大力赞赏,谢谢!

1 个答案:

答案 0 :(得分:2)

问题是您使用通配符作为第一个组件。如果您查看hook_menu()的{​​{3}},您会看到以下内容:

  路径简单通配符中的

通配符

     

路径中的通配符也适用于整数替换。对于   例如,您的模块可以注册路径&my-module /%/ edit':

$items['my-module/%/edit'] = array(
   'page callback' => 'mymodule_abc_edit',
   'page arguments' => array(1),   
  );
     

当路径' my-module / foo / edit'请求,整数1将是   替换为' foo'并传递给回调函数。 请注意   通配符不能用作第一个组件。