我正在研究一个Drupal模块,试图获取全局变量$user
uname
和uid
:如果在.module文件中使用$user
它可以工作,但如果不是,我会得到:Trying to get property of non-object in ... on line 377
,var_dump($user)
给出了null
,这是我的代码:
MyModuleAPI.php:
function get_DB_Handler($projectname)
{
global $user;
$u_name = $user->name;
$u_id = $user->uid; //line 377
...
}
此函数在 ajax POST 查询后调用。
如果有人为我澄清区别在哪里,我将不胜感激,因为所有文件都在同一个模块中。任何帮助将不胜感激。
$user
全局变量是在Drupal引导时定义的。必须从核心调用适当的函数,使其在非模块代码中可见。将以下内容放在文件的开头:
<?php
$file_path = dirname(__FILE__);
$path = preg_replace('/sites.*/', "", $file_path);
//adjust the path to your website root directory
$path = substr_replace($path ,"",-1);
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['HTTP_HOST'] = 'site_hostname';
require_once($path . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'bootstrap.inc');
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);