You are here

向加载函数传递额外的参数

如果需要向加载函数传递额外的参数,那么可以使用load arguments键来定义它们。下面是来自节点模块的例子:一个用来查看节点修订本的菜单项。在这里需要向加载函数,也就是node_load(),传递节点ID和修订本的ID。

 
$items['node/%node/revisions/%/view'] = array(
    'title' => 'Revisions',
    'load arguments' => array(3),
    'page callback' => 'node_show',
    'page arguments' => array(1, NULL, TRUE),
    'type' => MENU_CALLBACK,
);
 
    菜单项为load arguments键指定了array(3)。这意味着,除了节点ID通配符的值会自动传递给加载函数以外,还会向加载函数传递一个额外的参数。因为array(3)里面有个元素,也就是整数3;我们在“使用通配符的值”一节中已经讲过,这意味着将会使用路径中的部分3。位置和路径参数的示例URL http://example.com/?q=node/56/revisions/4/view,如表4-2所示。
 
4-2.当查看页面http://example.com/?q=node/56/revisions/4/view时,Drupal路径node/%node/revisions/%/view的位置和参数
 
位置   参数       来自URL的值
0       node        node
1       %node       56
2       revisions  revisions
3       %           4
4       view        view
 
    因此,定义了load arguments键,这就意味着将会调用node_load('56', '4'),而不是node_load('56')了。
 
    当页面回调运行时,加载函数会将'56'替换为加载了的节点对象,所以页面回调将会是node_show($node, NULL, TRUE)。
老葛的Drupal培训班 Think in Drupal

Drupal版本: