我將模塊從Drupal 6移植到Drupal 7,並試圖將自定義模塊中的變量傳遞給模板。我有這樣的事情: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']; ?>
所有這一切使我的網站拋出了以下錯誤:
Fatal error: Unsupported operand types in C:...\includes\theme.inc on line 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,錯誤不再出現,但隨後我的模板不承認我的$ page_params變量:
return theme('my_theme', array('page_params' => $page_params));
我有閱讀API的一半試圖找出我做錯了什麼,但據我所知,這似乎是將自定義模塊中的變量傳遞給模板的正確方法。因此,任何形式的幫助都會比歡迎。
在此先感謝。
感謝您的回答,可悲的是,我從來沒有嘗試過,因爲最終我的代碼工作。但無論如何,我想知道一種方法是否比另一種更好,或者如果不選擇你選擇的方式。 – Clickhere
這不是推薦的方法。不要使用variable_set作爲臨時值或會話值。 – anoopjohn