我正在将一个模块从 Drupal 6 移植到 Drupal 7,并且我试图将一个变量从我的自定义模块传递给一个模板。我有这样的事情:
function my_callback_function(){
... //some unrelated code
$page_params = array();
$page_params['items_per_page'] = 25;
$page_params['page'] = $_GET['page'] ? $_GET['page'] : 0;
$page_params['total_items'] = $data_provider->getNumItems();
$page_params['total_pages'] = $data_provider->getNumPages($page_params['items_per_page']);
return theme('my_theme', $page_params);
}
function my_module_theme($existing, $type, $theme, $path) {
return array(
'my_theme' => array(
'variables' => array('page_params' => NULL),
'template' => 'theme/my_template_file',
),
);
}
在 *my_template_file.tpl.php* 中,我尝试使用 $page_params:
<?php print $page_params['total_items']; ?>
所有这一切使我的网站抛出以下错误:
致命错误:C:...\includes\theme.inc 中不支持的操作数类型(第 1075 行)
这与theme.inc中的这些代码行相对应:
// Merge in argument defaults.
if (!empty($info['variables'])) {
$variables += $info['variables']; // THIS IS THE VERY EXACT LINE
}
elseif (!empty($info['render element'])) {
$variables += array($info['render element'] => array());
}
如果我像在 Drupal 6 中一样保留theme()调用,则不会出现错误,但是我的模板无法识别我的 $page_params 变量:
return theme('my_theme', array('page_params' => $page_params));
我已经阅读了一半的 API,试图找出我做错了什么,但据我所知,这似乎是将变量从自定义模块传递到模板的正确方法。因此,任何形式的帮助都将受到欢迎。
提前致谢。