我有一个Joomla 1.6安装,它在两个数据库上运行:Joomla的数据库和特定于域的数据库,它们都在同一个MySQL服务器上。某些实体在特定于域的数据库中保留其所有权链接,即存储创建它的Joomla用户的user_id。部分链接不一致,指向不存在的Joomla用户,从域模型的角度来看是正常的。问题是,当我试图获取用户名时显示的是
JUser::_load:Unable to load user with id 1
既然有这样的链接是可以的,我需要抑制这个消息。检索用户名的确切代码如下:
$user_id = $ticket->getUserId();
$user =& JFactory::getUser($user_id);
将此代码封装到ob_start() ... ob_end_clean()
中没有帮助。当然,我可以通过入侵Joomla的内部来做到这一点,但有没有更简洁的解决方案?我是新来的Joomla,所以也许有一些选项在管理面板来抑制这些消息?
UPDATE:设置display_errors=>off, html_errors=>off, display_startup_errors=>off没有帮助。使用PHP错误抑制@作为$user =@ JFactory::getUser($user_id)
也没有帮助。
为什么不直接预先检查用户是否存在,然后再运行代码呢?
$table = JUser::getTable();
$user_id = intval( $ticket->getUserId() );
if($table->load( $user_id ))
{
$user =& JFactory::getUser($user_id);
// now you are sure user exists
} else {
// user doesn't exists
}
您可以在配置中关闭错误信息的显示:
- 在标签服务器上,将错误报告设置为none。
- (可能也是:)在选项卡系统上,将调试系统设置为No.