【问题标题】:How to suppress Joomla's JUser::_load:Unable to load user with id error message?如何抑制 Joomla 的 JUser::_load:Unable to load user with id 错误消息?
【发布时间】:2011-10-22 02:23:13
【问题描述】:

我有一个在两个数据库上运行的 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 的新手,所以也许管理面板中有一些选项可以抑制这些消息?

更新: 设置 display_errors=>off、html_errors=>off、display_startup_errors=>off 没有帮助。使用 @ 为 $user =@ JFactory::getUser($user_id) 的 PHP 错误抑制也无济于事。

【问题讨论】:

  • 如果显示“无法加载 id 为 1 的用户”,您确定这样的用户存在吗?
  • 我绝对确定该用户不存在。但它是有效数据,所以我需要禁止显示此消息

标签: php joomla joomla1.6


【解决方案1】:

您可以在配置中关闭错误信息的显示:

  • 在选项卡服务器上,将 错误报告 设置为无。
  • (也可能:)在选项卡系统上,将 调试系统 设置为否。

【讨论】:

  • 调试系统设置为否。我稍后会检查错误报告,但我记得它也设置为无。
  • 错误报告设置为最大值,但设置为无也无济于事。
【解决方案2】:

您为什么不简单地预先检查用户是否存在,然后运行您的代码:

$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
}

【讨论】:

    猜你喜欢
    • 2022-02-25
    • 1970-01-01
    • 2019-08-26
    • 2011-02-11
    • 2015-11-29
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    相关资源
    最近更新 更多