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

时间:2016-04-21 12:35:49

标签: php joomla

致命错误:不能在第548行的dministrator / components / com_menus / 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。

3 个答案:

答案 0 :(得分:2)

确保您的扩展程序运行的是最新版本。

您还可以搜索

的用途
JFilterInput::clean(SOMETEXT);

并将其替换为:

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

请检查:https://docs.joomla.org/J3.x:Fatal_Error_in_Input_Filtering/en

答案 1 :(得分:2)

由于$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);

答案 2 :(得分:0)

非常感谢指针Mark和Rishi。

我通过下载完整的Joomla 3.5.1软件包并替换整个管理员/ components / com_menus目录解决了这个问题,现在可以正常使用了!

我怀疑在3.4.1-> 3.5.1更新过程中(使用Joomla Update Manager)缺少一些文件。我建议手动升级以避免意外或不需要的情况。