Новости Joomla

Совет по Joomla: $db->getQuery(true) стал устаревшим

Совет по Joomla: $db->getQuery(true) стал устаревшим

👩‍💻 Совет по Joomla: $db->getQuery(true) стал устаревшим.Раньше при создании запросов в базу данных мы всегда получали объект запроса с помощью метода

getQuery(). Если передавался параметр
$new =
true, то получали новый запрос. Если без - последний.

use Joomla\CMS\Factory;$db = Factory::getContainer()->get('DatabaseDriver');$query = $db->getQuery(new: true);// и строим запрос
Под капот Joomla 4 вошёл Joomla Framework (PHP фреймворк а-ля Laravel, Yii и т.д.), а для Joomla 5 он обновился - версия 3.4.1 вышла 6 октября 2023г. В методе фреймворка есть примечание о том, что параметр
$new, который передавался в метод
getQuery() помечен как устаревший и будет удалён в версии фреймворка 4.0.
The parameter $new is deprecated and will be removed in 4.0, use %s::createQuery() instead.В Joomla 4 версия Joomla Framework была 2.x., в Joomla 5 - 3.x. Поэтому есть предположение, что с выходом Joomla 6 обновится и версия фреймворка - станет 4.0. Поэтому для получения объекта для новых запросов следует использовать метод
createQuery(). Он уже представлен в ядре и широко используется. При этом метод
getQuery() останется, но, скорее всего, будет выполнять функцию только геттера - получения текущего запроса.
@joomlafeed#joomla #php #разработка

0 Пользователей и 1 Гость просматривают эту тему.
  • 7 Ответов
  • 1999 Просмотров
*

White_Tiger

  • Захожу иногда
  • 88
  • 3 / 0
Господа товарищи. Я видимо что-то не догоняю в работе Joomla, но у меня вот таков интересный затык.
Захотелось отловить вновь создаваемые модули время когда они создались и т.д. типа чтобы вывести пользователю сайта небольшой блок "изменения на сайте". Для данной цели, решил написать триггер (поскольку штатных методов заставить Joomla хранить даты создания/модификации модулей не нашёл):
Код
CREATE TRIGGER `jm_modules_after_insert`
AFTER INSERT ON `jm_modules`//табла создающаяся Joomla и хранящая инфу о всех модулях
FOR EACH ROW BEGIN
insert into modify_modul (mod_id) //типа затолкнуть айдишник вновь созданного модуля в мою собственную табличку
values (new.id);
END;
после этого создание любых модулей стало невозможным, после жмяканья "сохранить" Joomla выводит следующую ошибку:
"Header may not contain more than a single header, new line detected in Z:\home\172.16.13.77\www\libraries\joomla\application\web.php on line 960".
Что это за радость может быть? Триггер же работает вроде как после работы скрипта и не должен ему никак мешать. подскажите что это такое?
*

almika

  • Захожу иногда
  • 325
  • 27 / 0
Re: Ошибка при создании модуля
« Ответ #1 : 29.01.2016, 02:00:25 »
У меня на хостинге триггеры и хранимые процедуры не поддерживаются. Может у вас тоже с этим связана ошибка.
*

White_Tiger

  • Захожу иногда
  • 88
  • 3 / 0
Re: Ошибка при создании модуля
« Ответ #2 : 29.01.2016, 08:11:08 »
Может быть. А как проверить не подскажете?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Ошибка при создании модуля
« Ответ #3 : 29.01.2016, 09:33:00 »
Новая строка в header, скорее всего, при redirect. Сделайте плагин на событие onExtensionAfterSave.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

White_Tiger

  • Захожу иногда
  • 88
  • 3 / 0
Re: Ошибка при создании модуля
« Ответ #4 : 01.02.2016, 13:12:10 »
Уважаемый Роберт!
Плагины писать в общем и целом я научился, вот только... не так давно ковыряюсь в Joomla да и PHP в целом. Подскажите пожалуйста, а где хранятся параметры создаваемых материалов/модулей. Я так понимаю эта какая-нибудь служебная переменная-массив существующая только внутри какого-нибудь класса и только пока идёт работа с материалом/модулем? Мне бы как-то её перехватить и забрать из неё некоторые данные.
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Ошибка при создании модуля
« Ответ #5 : 01.02.2016, 13:31:30 »
Уважаемый Роберт!
Плагины писать в общем и целом я научился, вот только... не так давно ковыряюсь в Joomla да и PHP в целом. Подскажите пожалуйста, а где хранятся параметры создаваемых материалов/модулей. Я так понимаю эта какая-нибудь служебная переменная-массив существующая только внутри какого-нибудь класса и только пока идёт работа с материалом/модулем? Мне бы как-то её перехватить и забрать из неё некоторые данные.
Параметры хранятся в базе, обычно в колонке params. Для материалов это таблица com_content, для модулей - com_modules.
*

White_Tiger

  • Захожу иногда
  • 88
  • 3 / 0
Re: Ошибка при создании модуля
« Ответ #6 : 01.02.2016, 14:07:36 »
Дмитрий, я это знаю, но туда они ссыпаются уже после создания/модификации материала/модуля. Как потом искать там нужный остаётся загадкой. Теоретически можно, конечно, селектнуть последний обновлённый материал, но это как-то похоже на костыль, а для модулей там вообще не хранится время создания/обновления. Хотелось бы ещё в момент работы отловить IDшник модуля/материала.
Суть-то в чём. Хочется научить сайт выводить на главной странице данные о любых обновлениях. Для материала это несложно, всё хранится в базе включая дату обновления. С модулями всё обстоит сложнее, в БД о них мало информации. Решил просто создать свою табличку куда бы ссыпалось ID изменённого объекта, время когда это было и его тип (модуль или материал). Попытался написать триггер, но созданный триггер обрушил работу модулей (с этого начинается созданная тема), мне посоветовали создать плагин, вот я и ковыряюсь.
Возможно Вы сможете подсказать ещё более простое и изящное решение, буду благодарен. А пока я ищу переменную хранящую информацию об обрабатываемом объекте.
И да, отдельное Вам спасибо, за серию статей https://cmscafe.ru/docs/joomla/developer/plugin-joomla-2-5-joomla-3. Они меня научили мастерить плагины. ^-^
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Ошибка при создании модуля
« Ответ #7 : 01.02.2016, 14:33:46 »
Все данные о расширениях находятся в таблице #__extensions. Для отслежения их измениений можно написать плагин на события onExtensionAfterInstall, onExtensionAfterUpdate, onExtensionAfterUninstall. Для более детальной информации посмотреть класс JInstaller.
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывести дату завершения публикации модуля publish_down

Автор theflame

Ответов: 7
Просмотров: 4646
Последний ответ 06.10.2017, 12:46:30
от NewUsers
вывести данные из модуля с формой Subform form field type

Автор Glog

Ответов: 19
Просмотров: 2165
Последний ответ 22.06.2017, 13:32:07
от Glog
Ошибка при попытке получить параметры активного пункта меню в контроллере компонента

Автор Inoken

Ответов: 10
Просмотров: 1803
Последний ответ 19.06.2017, 14:29:22
от dmitry_stas
Зависимость модуля от компонента и страницы

Автор Тренд

Ответов: 34
Просмотров: 3017
Последний ответ 16.06.2017, 19:48:39
от dmitry_stas
Com_contact как получить Email из модуля

Автор tystnaden

Ответов: 4
Просмотров: 1477
Последний ответ 16.12.2015, 19:50:42
от tystnaden