首页 > 解决方案 > 注意:尝试在第 169 行的 ../libraries/src/UCM/UCMType.php 中获取非对象的属性

问题描述

当我尝试安装 Joomla!扩展JCH,我在完成安装后想出了上面的标题信息。我问了开发人员,他回答说我不必担心扩展,因为这是 Joomla!问题是它不会影响扩展的工作方式。

UCMType.php 的第 169 行如下:

$tableNameFromType = $tableFromType->special->prefix . $tableFromType->special->type;

以及包含第 169 行的 UCMType.php 的特定部分:

public function getTypeByTable($tableName)
    {
        $query = $this->db->getQuery(true);
        $query->select('ct.*');
        $query->from($this->db->quoteName('#__content_types', 'ct'));

        // $query->where($this->db->quoteName('ct.type_alias') . ' = ' . (int) $typeAlias);
        $this->db->setQuery($query);

        $types = $this->db->loadObjectList();

        foreach ($types as $type)
        {
            $tableFromType = json_decode($type->table);
            $tableNameFromType = $tableFromType->special->prefix . $tableFromType->special->type;

            if ($tableNameFromType === $tableName)
            {
                return $type;
            }
        }

        return false;
    }

标签: phpjoomlajoomla-extensions

解决方案


你真的不必对这个问题给予太多关注,所以第三方扩展开发者在这方面是对的。这更像是一个小错误(因此存在通知),而不是严重的错误。您的网站将毫无问题地运行。

正如您在本通知中看到的那样,foreach(){}循环中,尝试从另一个不是 Object 的变量中定义一个变量,因此它很可能只是返回一个 NULL 值或另一个没有 Object 属性的 TYPE预计在那里。

在这种特殊情况下,整个事情发生在一个相对较新的 Joomla 核心类和接口(UCM 和 UCMType)中。在这个类中,他们希望按表格定义内容类型,这部分代码必须由核心 Joomla 开发人员进行修改和改进。

你该怎么办?

1.如果您想对Joomla和您自己的开发有所帮助,请在此处报告此问题:https ://developer.joomla.org/tracker.html ,他们很可能会检查并修复此问题。

2.这个PHP(错误)通知通常是给开发者的,所以如果你的网站是一个live site你应该基本看不到这个通知。如果您在实时站点上看到这一点,这可能意味着您的 Joomla 错误报告设置不正确,或者您的服务器错误报告默认设置不正确。

在您的Joomla 管理员System->Global Configuration->Server->Error reporting必须设置为System DefaultNone。因此,这些不相关的通知将不会出现给您网站的用户和访问者。仅当您的站点不是实时站点并且您在临时副本中进一步开发时,才建议使用其他设置。

如果您对 Joomla 有疑问,请访问此处的 Joomla Stack Exchange:https ://joomla.stackexchange.com/questions并请在那里询问您有关 Joomla 的问题。

我希望以上内容为您解决了问题。


推荐阅读