Новости 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 Гость просматривают эту тему.
  • 3 Ответов
  • 1261 Просмотров
*

kkmspb

  • Новичок
  • 6
  • 0 / 0
Здравствуйте!
Не могу , туплю. Недавно с Joomla. 
Надо для админки плагин задействовать, то есть как-то заставить работать.

Если плагин в составе компонента, это вижу на примере (com_actionlogs), что плагин работает, то есть его можно подписать на событие открытия заказа в JoomShopping.

Но  я наверное пошел неправильным путем - создал не компонент, а модуль для админки и плагин, который устанавливается вроде как для site (а других и не бывает?...).

В общем в этой схеме плагин вроде подключается в модуле (админки) ок:
PluginHelper::getPlugin(''  , 'plg_payment_acceptance');   // ok
PluginHelper::isEnabled('' , 'plg_payment_acceptance');  // true
     
Но подписка на событие на работает...

*

sivers

  • Живу я здесь
  • 2587
  • 359 / 0
Плагины в Joomla устанавливаются общесистемно. Т.е. для них нет разницы что вы открываете - фронт или админку. Если вам надо только в одной части отрабатывать, то приходится в самом плагине писать условие на проверку фронт это или админка.

Чтоб работал плагин, надо:
1. Установить и АКТИВИРОВАТЬ плагин (т.к. по умолчанию плагин остается отключенным после установки).
2. Вызвать событие, обработчик которого есть в плагине. Это может быть либо общесистемное событие, либо ваше собственное, в этом случае вызвать его можно так:
Код
$app->triggerEvent('onBeforeOrderSave', array($cid, $post));
Пример генерации события сохранения заказа с передачей 2-х параметров в плагин.
3. В некоторых ситуациях, например, при вызове плагина из своего скрипта, когда не было полной инициализации Joomla, может потребовать предварительный импорт плагина (чтоб система знала о нем), а потом уже генерация события. Импорт плагина:
Код
PluginHelper::importPlugin('system', 'infobot');
здесь infobot - это имя плагина, а system - группа плагина.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

kkmspb

  • Новичок
  • 6
  • 0 / 0
Код
PluginHelper::importPlugin('system', 'infobot');
здесь infobot - это имя плагина, а system - группа плагина.

Спасибо за ответ!

В общем посоздавал компоненту (в админке), модуль (в админке), плагин ('system'), событие начал отлавливать гут. Но в башке путаница. Зачем столько сущностей. Да еще в зависимости от group="xxxx" установка по разным директориям идет.

implements SubscriberInterface начал использовать для класса плагина.

1. Я правильно понимаю, что если плагин устанавливать в 'system', то он всегда будет стартовать на каждой странице.

2. Мне бы в идеале только на странице редактирования заказа (вот примерно здесь /administrator/index.php?option=com_jshopping&controller=orders&task=show&order_id=4) добавить свой функционал:

2.1 пару кнопок Наличный и Банк.Карта
2.2 AJAX запрос на localhost:44735, ждем ответ (красиво с окном ожидания например на jquery_ui)
2.3 получаем ответ, изменяем статус заказа, сохраняем заказ.

3. Код JoomShopping править не хочу

Не понимаю как правильнее - сделать модуль (в админке) и плагин в систему?

Думаю модуль использовать. Далее пользователь его может пометить в top например, то есть он будет сверху окна заказа допустим.

В модуле надо как-то показывать его только в варианте страницы с GET option=com_jshopping&controller=orders&task=show. Это не проблема.

Но вот странно событие onBeforeShowOrder из Joomshopping приходит в плагин раньше чем выводится Модуль.

 

« Последнее редактирование: 30.08.2024, 18:09:27 от kkmspb »
*

kkmspb

  • Новичок
  • 6
  • 0 / 0
Цитировать
Не понимаю как правильнее - сделать модуль (в админке) и плагин в систему.


Да похоже такой вариант работает нормально. То есть системный плагин загружается раньше чем модуль (естественно).


Но и событие из JoomShopping с данными заказа прилетает тоже раньше загрузки модуля.


Таким образом есть только вариант: в плагине сохранить данные заказа из прилетевшего события из JoomShopping и при загрузке модуля забрать эти данные из плагина и отрисовать свой дополнительный интерфейс с учетом этих данных (заказа).


Вот такой код в модуле работает:
Код
    $pluginEnable = PluginHelper::isEnabled('system' , 'paymentacceptance');


    if( $pluginEnable )
    {
        $myPlugin = Factory::getApplication()->bootPlugin('paymentacceptance','system');

        $order = $myPlugin->getOrder();

        $order_items = $myPlugin->getOrderItems();

    }
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

addScript (в админке) к пути файла js добавляет /administrator/. Зачем?

Автор kkmspb

Ответов: 0
Просмотров: 963
Последний ответ 02.09.2024, 14:42:25
от kkmspb
Не работает плагин на хостинге

Автор a7951396

Ответов: 3
Просмотров: 1916
Последний ответ 29.11.2023, 17:56:49
от a7951396
Плагин joomirseopagination доработка

Автор Stasweb

Ответов: 15
Просмотров: 2612
Последний ответ 16.03.2023, 15:00:33
от Stasweb
Akeeba Admin Tools Core - не могу снять пароль

Автор AlexP750

Ответов: 1
Просмотров: 2040
Последний ответ 06.10.2022, 18:15:14
от Mitriy
Не могу установить языковой пакет для компонента Joomla Events Manager ((jem))

Автор Ded Magomed

Ответов: 0
Просмотров: 1671
Последний ответ 24.05.2022, 15:06:38
от Ded Magomed