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

Podryvnik

  • Новичок
  • 5
  • 0 / 0
Доброго всем времени суток, уважаемые форумчане!
Сразу скажу, я с Joomla где-то как-то и весьма условно. Поэтому сразу прошу не пинать за глупые вопросы.
Я не знаю, зачем разработчики прикрутили Acymailing к интернет-магазину, - магазин почти не живой, делают с него заказ раз в два года, но что сделано, то сделано.
При попытке отправить письмо (даже тестовое) выскакивает следующая картинка:

https://yadi.sk/i/I0kYVJT_PaAVFQ

Пробовал поменять метод отправки, даже настроил через сторонний SMTP, чтобы уже совсем чистым эксперимент сделать. Но ничего не меняется.

Joomla! 3.6.5 Stable [ Noether ]
AcyMailing Starter : 5.6.1

Как вы думаете, что подкрутить, чтобы всё заработало?
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Хостинг?
Ну или обновиться и удостовериться что нет вареза
*

Podryvnik

  • Новичок
  • 5
  • 0 / 0
Про хостинг я не подумал, честно!
Попробую в ТП написать, возможно действительно у них какая-то переадресация стоит... отпишусь сюда, если в них дело было, для накопления коллективного опыта )))
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Про хостинг я не подумал, честно!
Попробую в ТП написать, возможно действительно у них какая-то переадресация стоит... отпишусь сюда, если в них дело было, для накопления коллективного опыта )))
Тут скорее всего беда в квикстарте
*

Cedars

  • Давно я тут
  • 585
  • 31 / 0
Есть смысл удалить Acymailing  и установить ужо скачанный с официального сайта..
*

Podryvnik

  • Новичок
  • 5
  • 0 / 0
Есть смысл удалить Acymailing  и установить ужо скачанный с официального сайта..
А настройки не слетят? Там просто VirtueMart накручен и этот AcyMailing единственную функцию выполняет - отправлять уведомления о заказе. Я не скажу также, что с этого сайта глобально часто заказывают, он скорей так, для галочки сделан - может один заказ в год. Но вот такая вот непруха.
Хостинг?
Вот ответ от ТП Бегета:
Цитировать
Здравствуйте.

Каких либо редиректов на PHPMailer у нас не настроено. Возможно, данную особенность включил в скрипт разработчик

Так что скорей всего AcyMailing мозг парит. Попробую еще PHPMailer обновить, потом другие варианты пробовать...
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
AcyMailing единственную функцию выполняет - отправлять уведомления о заказе. Я
А зачем уведомления отправлять через аську?
Или старый вирт не умеет сам?
*

Podryvnik

  • Новичок
  • 5
  • 0 / 0
Или старый вирт не умеет сам?
Да там не особо старый - VirtueMart 3.0.18 в панели управления пишет. По идее и сам должен мочь... Там просто начали сайт делать одни, потом доделывали другие, а теперь это "счастье" на мою грешную голову свалилось "в нагрузку". Очевидно, что там костылей накрутили и теперь шаг вправо, шаг влево, не знаешь что отвалится, если вдруг надумаешь обновить платформу, например.
*

Podryvnik

  • Новичок
  • 5
  • 0 / 0
В общем, решил откатом class.phpmailer.php - с новейшим не работает почему-то - ошибку 500 пишет. Возможно, коряво обновлено было.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не работает Edit Page в SP Page Builder, невозможно редактировать страницу

Автор sergspb

Ответов: 4
Просмотров: 2168
Последний ответ 17.07.2024, 12:03:59
от sergspb
Как вывести на страницу в виде картинок как фотогалерею из widgetkit?

Автор chechelnitskiy

Ответов: 0
Просмотров: 1663
Последний ответ 08.05.2024, 13:31:09
от chechelnitskiy
Форма отправки! HELP me please

Автор annetkas

Ответов: 1
Просмотров: 3385
Последний ответ 03.02.2022, 19:05:09
от annetkas
Acymailing

Автор Bangoo

Ответов: 5
Просмотров: 2235
Последний ответ 05.03.2021, 17:05:53
от sivers
Не приходят письма из AcyMailing Enterprise 6.1.2

Автор Orfei

Ответов: 2
Просмотров: 1432
Последний ответ 20.08.2019, 18:49:27
от nia