joomla 1.7.3 - При выборе языка пользователя ОШИБКА!

dtvims
Site Admin
Сообщения: 135
Зарегистрирован: Пн авг 02, 2010 2:43 pm

joomla 1.7.3 - При выборе языка пользователя ОШИБКА!

Сообщение dtvims » Ср июн 20, 2012 10:37 am

В joomla 1.7.3 после выбора языка интерфейса у пользователя появляется ошибка что класс JController не найден! Возможно в более новой версии баг исправлен, но не всегда обновление версии возможно, по крайней мере автоматом.
Что происходит и почему так, ведь при языке по умолчанию все работает? Дело в том, что после выбора языка активируется или просто ранее вызывается класс кеширования. Причем тут кэширование? А при том, что в нем есть библиотеки в папке "/libraries/joomla/cache/controller/", да и сам контроллер кэша имеет такой путь "/libraries/joomla/cache/controller.php". Это означает, что данный класс можно вызвать вот таким методом "jimport('joomla.cache.controller');". Функция "jimport" вызывает функцию класса отвечающего за автоматическую подгрузку необходимых библиотек. При вызове "jimport" в специальный буфер помещается путь "/libraries/joomla/cache/" к классу "JController", но в файле "/libraries/joomla/cache/controller.php" нет класса "JController"! Чтобы избежать дубликатов, последующие вызовы "jimport('joomla.application.component.controller');" будут просто игнорироваться, поскольку путь к последнему элементу пути ".controller" уже есть, хоть и не верный. Таким образом, когда будет вызван класс "JController", его система будет безуспешно искать в "/libraries/joomla/cache/controller.php".
Чтобы этого избежать в самом классе, да и вызов класса "JCacheController" используется не через "jimport", а практически напрямую подключая нужные библиотеки. Да и чтобы "jimport" сработала правильно класс должен называться также как файл в котором он находится, т.е. класс "JCacheController" должен находиться в файле "/libraries/joomla/cache/cachecontroller.php" и подключаться так "jimport('joomla.cache.cachecontroller');". Но ошибка-то есть!
Засада в файле "/libraries/joomla/cache/controller/callback.php". Почему-то разработчики в этом файле оставили "jimport". Более того, подключение в "callback.php" контроллера "JCacheController" не нужно т.к. класс "JCacheController" сам и подключает библиотеку "callback.php". Необходимо в нем просто закомментировать строчку "jimport('joomla.cache.controller');" и все!

MoskKsusBiz
Сообщения: 10
Зарегистрирован: Пн окт 19, 2015 10:43 am

Перейти к последнему сообщению

Сообщение MoskKsusBiz » Сб янв 30, 2016 8:50 pm

это самое лутшее что я видел


Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость