作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
我们新增一个菜单项:
function menu_wildcard_menu() {
$items['wildcard/%'] = array(
'title' => '简单的通配符',
'description' => '一个简单的包含通配符的菜单项.',
'page callback' => 'menu_wildcard_callback_page',
'page arguments' => array(1),
'file' => 'menu_wildcard.pages.inc',
'access callback' => TRUE,
);
$items['wildcard/%/b'] = array(
'title' => '普通的通配符',
'description' => '一个普通的包含通配符的菜单项.',
'page callback' => 'menu_wildcard_callback_page',
'page arguments' => array(1),
'file' => 'menu_wildcard.pages.inc',
'access callback' => TRUE,
);
return $items;
}
清空缓存后,让我们再次访问路径wildcard/123/b/c/d,得到如图3-19所示的结果。
图 3-19.通过URL只传递了两个参数c,d
第一个参数,123,是通过页面回调传递过来的。array(1)的意思是,“不管路径中的部分1是什么,请将它传递过来”。我们是从0开始算起的,所以部分0就是'wildcard ',部分1就是通配符所匹配的任何东西,部分2就是'b',依次类推。此时,b是Drupal路径中的一部分了,不再通过URL传递。后面的c,d,也被传递了过来,它的传递原理我们在前面已经学过了,那就是Drupal路径后面的一部分将会作为参数传递给回调函数,注意图3-18和图3-19之间的区别。