2016-04-21 3 views
1

Фатальная ошибка: Невозможно использовать объект типа StdClass как массив в/компоненты О Б/com_menus/модели/item.php на линии 548Фатальная ошибка: Невозможно использовать объект типа StdClass как массив после обновления до Joomla 3.5.1

линии # 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.

+0

Это не ошибка в ядре Joomla, поэтому, пожалуйста, убедитесь, что вы обновили все свои расширения, поскольку это будет одна из причин, вызывающих ошибку. Либо это, либо отменить любые основные хаки, которые вы, возможно, сделали – Lodder

ответ

2

Убедитесь, что ваши расширения работают с последними версиями.

Вы можете также искать для использования

JFilterInput::clean(SOMETEXT); 

и заменить его:

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

Проверьте это: https://docs.joomla.org/J3.x:Fatal_Error_in_Input_Filtering/en

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); 
0

Большое спасибо за указатели, Марк и Риши.

Я решил проблему, загрузив полный пакет Joomla 3.5.1 и заменив весь каталог администратора/компонентов/com_menus, и теперь он работает!

Я подозреваю, что в процессе обновления 3.4.1-> 3.5.1 отсутствуют некоторые файлы (с помощью диспетчера обновлений Joomla). Я бы рекомендовал выполнить ручное обновление, чтобы избежать неожиданных или нежелательных ситуаций.

Смежные вопросы