Ошибка com_ajax в Joomla 6
при работе с legacy-модулями
Мы работаем на Joomla с 2009 года и знаем: после обновления ядра старые модули ломают com_ajax — AJAX-запросы падают с 500. Разбираем причины и способы исправления без отката ядра — классика «проблема/решение».
Классика: проблема и решение
Что не работает в Joomla 6
JFactory и JRequest
Удалены в Joomla 4+. Legacy-модуль падает при первом же AJAX-запросе.
Factory::getApplication()
Современная замена. Работает через DI-контейнер.
JResponse::setBody
Устаревший способ отдачи ответа. В Joomla 6 не работает вообще.
echo json_encode()
Современный способ. Отдаём JSON и закрываем приложение.
Прямой $_POST
Ломает валидацию. com_ajax ожидает правильно оформленный запрос.
getInput()
Стандартный способ чтения параметров. С фильтрацией и валидацией.
Старые namespace
Не подгружаются автолоадером. Класс не находится.
PSR-4 namespace
Современный стандарт. Работает с автолоадером Joomla 6.
Как исправить
Пошаговое решение
1. Error Reporting = Maximum, воспроизвести ошибку.
2. Заменить JFactory на Factory::getApplication().
3. Заменить JResponse::setBody на echo json_encode(...).
4. Переписать модуль с namespace — или заменить на современный аналог.
5. Проверить на всех AJAX-запросах. Никаких ошибок 500 быть не должно.
Вопросы и ответы
Гео и техника
Работаете только в Перми?
Офис в Перми, работаем по всей России и краю: Березники, Соликамск, Чайковский, Кунгур, Краснокамск, Лысьва. Диагностику делаем удалённо.
Можно откатить ядро?
Это временно и небезопасно. Откат не решает проблему — при следующем обновлении всё вернётся. Правильное решение — адаптировать модуль под Joomla 6.
Сколько занимает адаптация?
От 1 до 3 дней — в зависимости от сложности модуля. Простые правки (замена JFactory, JResponse) — 1 день. Полная переработка с namespace — 3 дня.
Что если модуль не поддерживается?
Заменяем на современный аналог — например, Reemake AJAX Content. Функционал не потеряется, а часто становится лучше.
Сломались AJAX-модули?
Проведём диагностику, адаптируем под Joomla 6. Бесплатный аудит — оценим проект без обязательств. Пришлём расчёт в течение 1 рабочего дня.
Начнём диагностику →




Messenger Max