Php 致命错误:升级到Joomla 3.5.1后,无法将stdClass类型的对象用作数组

Php 致命错误:升级到Joomla 3.5.1后,无法将stdClass类型的对象用作数组,php,joomla,Php,Joomla,致命错误:无法在第548行的dministrator/components/com_menu/models/item.php中将stdClass类型的对象用作数组 第546-550行: // Get selected fields $filters = JFactory::getApplication()->getUserState('com_menus.items.filter'); $data['published'] = (isset($filters['published']) ?

致命错误:无法在第548行的dministrator/components/com_menu/models/item.php中将stdClass类型的对象用作数组

第546-550行:

// Get selected fields
$filters = JFactory::getApplication()->getUserState('com_menus.items.filter');
$data['published'] = (isset($filters['published']) ? $filters['published'] : null);
$data['language'] = (isset($filters['language']) ? $filters['language'] : null);
$data['access'] = (isset($filters['access']) ? $filters['access'] : null);
在菜单管理器中创建新菜单项时出错


菜单管理器工作正常,直到从Joomla 3.4.1升级到3.5.1。

确保您的扩展运行最新版本

您还可以搜索

JFilterInput::clean(SOMETEXT);
并将其替换为:

$filter = new JFilterInput;
$filter->clean(SOMETEXT);

检查此项:

确保您的扩展正在运行最新版本

您还可以搜索

JFilterInput::clean(SOMETEXT);
并将其替换为:

$filter = new JFilterInput;
$filter->clean(SOMETEXT);
选中此项:

因为$filters是具有属性的对象,而不是具有元素的数组;因此,您需要使用对象语法来访问这些属性:

$data['published'] = (isset($filters->published) ? $filters->published : null);
$data['language'] = (isset($filters->language) ? $filters->language : null);
$data['access'] = (isset($filters->access) ? $filters->access : null);
因为$filters是具有属性的对象,而不是具有元素的数组;因此,您需要使用对象语法来访问这些属性:

$data['published'] = (isset($filters->published) ? $filters->published : null);
$data['language'] = (isset($filters->language) ? $filters->language : null);
$data['access'] = (isset($filters->access) ? $filters->access : null);

谢谢你的指点,马克和瑞希

我通过下载完整的Joomla 3.5.1包并替换整个administrator/components/com_菜单目录解决了这个问题,现在它可以工作了


我怀疑在使用Joomla更新管理器的3.4.1->3.5.1更新过程中丢失了一些文件。我建议进行手动升级,以避免意外或不必要的情况。

非常感谢您提供的指针、Mark和Rishi

我通过下载完整的Joomla 3.5.1包并替换整个administrator/components/com_菜单目录解决了这个问题,现在它可以工作了


我怀疑在使用Joomla更新管理器的3.4.1->3.5.1更新过程中丢失了一些文件。我建议手动升级以避免意外或不必要的情况。

这不是Joomla内核中的错误,因此请确保您已更新了所有扩展,因为它将是导致错误的扩展之一。这不是Joomla内核中的错误,因此请确保您已更新了所有扩展,因为它将是导致错误的扩展之一。要么这样做,要么恢复你可能做过的任何核心攻击