Новости Joomla

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

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

ShadowXak

  • Завсегдатай
  • 1602
  • 162 / 6
  • no more programming
Накатил и помал, х.з. может и не из за этого если у товара ставить вес, то цена чудным образом становится больше:
было 4440 руб - при 0 кг
ставлю 1кг - в админке 4440 руб - на фронте 4806,30
ставлю 10кг - в админке 4440 руб - на фронте 4806,30
больше на 366,30 не зависимо от веса.
---
зы налогов нет
доставка 200 руб
Joomla 1.5.14
вирт 1.1.4 короче последний
---
пните в нужном направлении - вес нужен для определения стоимости доставки
*

TAX

  • Захожу иногда
  • 154
  • 10 / 0
Цитировать
Накатил и помал, х.з. может и не из за этого если у товара ставить вес, то цена чудным образом становится больше:
было 4440 руб - при 0 кг
ставлю 1кг - в админке 4440 руб - на фронте 4806,30
ставлю 10кг - в админке 4440 руб - на фронте 4806,30
больше на 366,30 не зависимо от веса.
Ради проверки поставил "с нуля" ВМ 1.1.4
Все налоги убрал
цена товара 10,00
поставил вес 10
Цена не изменилась
*

ShadowXak

  • Завсегдатай
  • 1602
  • 162 / 6
  • no more programming
хм... откуда тогда у меня вылазит, ставил аналогично с нуля 1.1.3 сегодня накотил 1.1.4
в магазине 3 товара, меняется у всех товаров, куда копать уже незнаю
устанавливал демоданные, может оттуда что пролезло, но найти не могу
« Последнее редактирование: 20.10.2009, 22:08:37 от ShadowXak »
*

ShadowXak

  • Завсегдатай
  • 1602
  • 162 / 6
  • no more programming
Короче какаято вато, сходил с собакой погулять, пришол обновил страницу и все работает нормально, что было загадка, на кэшь не похоже, т.к. цена менялась у всех товаров -> короче тему в корзину...
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
предлагаю поместить в FAQ - "прежде чем задать вопрос - прогуляйся с собакой!".... Или может "прогуляйсо, собако!"  :o
*

ShadowXak

  • Завсегдатай
  • 1602
  • 162 / 6
  • no more programming
Еще бы собака так часть хотела гулять ;)
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
хорошая собака никогда не откажется от прогулки :) Это я как бывший владелец трёх доберманов заявляю.(Доберы были не паралелльно, а последовательно)
*

ShadowXak

  • Завсегдатай
  • 1602
  • 162 / 6
  • no more programming
так оно завел сел за комп 3 минуты и опять на прогулку  ;D
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Нет категорий в списке при добавлении товара

Автор graforlov

Ответов: 5
Просмотров: 4114
Последний ответ 13.12.2015, 21:37:21
от Crazybor
Куда правильно писать обработчик добавления\редактирования единиц товара?

Автор cmd

Ответов: 2
Просмотров: 1762
Последний ответ 15.07.2011, 19:16:15
от cmd
[Решено]В корзину и колличество товара

Автор orchanin

Ответов: 5
Просмотров: 2032
Последний ответ 15.09.2010, 16:18:11
от adjuster
проблема в создании категории товара

Автор dimaxz

Ответов: 5
Просмотров: 2504
Последний ответ 16.02.2010, 06:04:09
от Дмитрий Федюк
Virtue Mart 1.1.3 Stable : Как указывать категорию товара?

Автор Olenka

Ответов: 2
Просмотров: 2261
Последний ответ 15.08.2009, 18:07:13
от Scratch