Igor
Ковырясь пришел к выводу что новое media поле j4 очень даже ничего. По капотом просто подключенный скрипт родного поля и html родного поля. Ну и мини скрипт для плюсика
Dmitry
Зачётно
RINAT
[4.1] Копия дочерних шаблонов · Выпуск №36994 · joomla/joomla-cms https://github.com/joomla/joomla-cms/issues/36994
Dmitry
https://habr.com/ru/post/650687/
Vladimir
https://habr.com/ru/post/650687/
Ну статья ни о чем Не соответствует заголовку
Vitaly
Всем доброго вечера пятницы! Если кто-то еще остался здесь, а не отдыхает. Возвращаясь у AJAX-загрузке методов хелпера модуля в J4... Решение-таки нашлось. Но день был полон фэйлов.
Dmitry
Заинтриговал
Vitaly
Само решение - отдельная история. Если в J3 нам нужно было всего лишь положить файл хелпера в корень модуля и добавить там метод, оканчивающийся на AJAX, то в J4:
Vitaly
Дмитрий
?
Дмитрий
а что тут такого?
Vitaly
Вот тут прямо песня: Мы уходили от: $helperFile = JPATH_BASE . '/modules/mod_' . $module . '/helper.php'; if ($results === null && is_file($helperFile)) а пришли к: $path = $extensionPath . '/services/provider.php'; if (is_file($path))
Дмитрий
ты понимаешь преимущства выделение в контейнеры?
Дмитрий
в том числе и модули
Vitaly
ты понимаешь преимущства выделение в контейнеры?
Понимаю, что не работает com_ajax без этого. Понимаю, что 0 информации по этому поводу.
Дмитрий
ну это да
Дмитрий
но то что это вообще так работает, это круто
Vitaly
Едем дальше
Дмитрий
что они все построили на контейнерах
Дмитрий
они теперь как зенд =)
Дмитрий
поступают
Dmitry
Имхо, они не докрутли
Дмитрий
джумла или зенд?
Dmitry
Если модули в том виде, который есть работают
Dmitry
Они должны работать и в com_ajax
Dmitry
Сейчас в четвёрке не надо извращаться
Дмитрий
да
Дмитрий
бесмыслеено
Dmitry
Только хелпер правильно назвать и положить в src
Дмитрий
есть старые
Дмитрий
и есть новые по новому
Дмитрий
как-то глупо в целом
Дмитрий
ты не можешь работать напрямую с контейнерами
Дмитрий
обнуляется просто все это
Vitaly
В злосчастный helper-класс модуля не получается передать параметры этого самого модуля. Точнее оно прекрасно работает, когда модуль вызывается напрямую и не работает, когда он вызывается через com_ajax. Хотя тут есть смысл, т.к. нельзя узнать параметры модуля без его ID. Выкручиваюсь тут так:
Dmitry
@wedalru это так не должно быть
Vitaly
$module = ModuleHelper::getModuleById($moduleId);
Vitaly
Что, как вы думаете, должно передаваться в метод getModuleById?
Vitaly
Я думал: ID. ID имеет тип int. Вроде логично. Но...
Vitaly
public static function &getModuleById($id) { $modules =& static::load(); $total = \count($modules); for ($i = 0; $i < $total; $i++) { // Match the id of the module if ((string) $modules[$i]->id === $id) { // Found it return $modules[$i]; } } // If we didn't find it, create a dummy object $result = static::createDummyModule(); return $result; }
Vitaly
Что это???😳 if ((string) $modules[$i]->id === $id)
Дмитрий
а что тут не такЮ
Дмитрий
от regex приходит строка
Дмитрий
в базе id int и приходит инт
Дмитрий
они приравняли к строке как к типу
Дмитрий
что ту ттакого?
Vitaly
А то что не работает, если передать int в этот метод
Vitaly
=== строгое сравнение
Дмитрий
это недоработка, они не сделали перегрузку
Дмитрий
надо было и id приравнять передаваймыей тоже
Дмитрий
но логика понятна почему они добавили
Дмитрий
так
Dmitry
Вот этого не должно быть, надо им issue делать
Дмитрий
Dmitry
модули не контейнеры? =(
Модули должны быть одинаковыми
Dmitry
Для com_ajax не должно быть своих приколов
Igor
Для com_ajax не должно быть своих приколов
Как я понял прикол не com_ajax в том что сам helper для j4 другой. Не вижу проблемы для перехода держать 2 хелпера.
Igor
А потом через пол года удалить старый и прекратить поддержку j3
Dmitry
Посмотри модули как сделаны
Dmitry
Там просто хелпер в другом месте лежит
Дмитрий
хотел спросить
Дмитрий
а как разводить сервера обновлений?
Igor
Там просто хелпер в другом месте лежит
Ну так этим пожно воспользоваться и новом месте юазть j4 на макс. вызывать модели нормально юзать неймпейсы и фарбрики.
Igor
а как разводить сервера обновлений?
Стабильно ни как. А по факту в манифесте сервера можно указать вресию
Дмитрий
то есть указываю сервер обновлений один, а там по идее надо целевую платформу что ли указывать
Дмитрий
типа больше не обновлять версии для j3 допустим
Дмитрий
а для j4 вести
Dmitry
Я не согласен )
Dmitry
Воротить сервис провайдеры для модулей - это излишество
Dmitry
И оно не должно быть обязательным
Dmitry
Сейчас оно необязательно, кстати. И работает.
Дмитрий
Воротить сервис провайдеры для модулей - это излишество
почему? ты получешь доступ к программному интерфейсному манипулированию
Dmitry
Только com_ajax тупит )