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

Ulman

  • Новичок
  • 4
  • 0 / 0
Не знал в какую тему добавить вопрос, поэтому выделил отдельно. У меня возникла следующая проблема при создании пунктов главного меню сайта. Я создаю пункт меню для зарегистрированных пользователей, в качестве типа пункта меню указываю - K2 - Форма редактирования материала. Затем при тестировании открывается новое окно с ошибкой 404, не найден файл. Я внимательно все изучил и заметил такую вещь: все пункты меню имеют ссылку например "localhot/index.php/forum", а этот пункт меню почему то "localhost/index2.php/dobavit". И соответсенно файл index2.php не находится Откуда взялась цифра 2 в названии index'a? И как это исправить, чтобы все нормально работало?
*

Ulman

  • Новичок
  • 4
  • 0 / 0
Re: Проблема с пунктами меню K2
« Ответ #1 : 14.01.2013, 10:30:45 »
И хочу еще добавить что другие пункты меню, которые ведут на материалы K2 работают нормально и в адресе ссылок нет index2.php а как и  положено index.php
*

paternoster

  • Давно я тут
  • 506
  • 24 / 1
Re: Проблема с пунктами меню K2
« Ответ #2 : 14.01.2013, 15:26:23 »
И хочу еще добавить что другие пункты меню, которые ведут на материалы K2 работают нормально и в адресе ссылок нет index2.php а как и  положено index.php
Открывать этот пункт меню залогинившись на сайте.А перед этим прописать себя - админа в группах пользователей К2 с правами добавления материала
*

Ulman

  • Новичок
  • 4
  • 0 / 0
Re: Проблема с пунктами меню K2
« Ответ #3 : 14.01.2013, 18:28:26 »
Все так и сделал! Но такая же проблема! А вот если вручную скопировать адрес ссылки и из названия убрать цифру 2, например: http://localhost/index.php/dobavit/, то открывается окно добавления материала! А с двойкой все равно пишет 404...
*

Ulman

  • Новичок
  • 4
  • 0 / 0
Re: Проблема с пунктами меню K2
« Ответ #4 : 14.01.2013, 18:31:50 »
А если удалить этот пункт меню и заново создать, все равно пишет http://localhost/index2.php/dobavit/ .....
*

xpine

  • Новичок
  • 1
  • 0 / 0
Re: Проблема с пунктами меню K2
« Ответ #5 : 13.10.2015, 20:33:44 »
Третий час бьюсь на этой же темой: на одном пункте меню появился index2.php, на других всё нормально. Что-то очень простое - кто подскажет?
*

Duff89

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Re: Проблема с пунктами меню K2
« Ответ #6 : 14.10.2015, 04:19:08 »
Все так и сделал! Но такая же проблема! А вот если вручную скопировать адрес ссылки и из названия убрать цифру 2, например: http://localhost/index.php/dobavit/, то открывается окно добавления материала! А с двойкой все равно пишет 404...
попробуй создать пункт меню-внешняя ссылка и туда впиши адрес без цифры 2.По идее должно заработать
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

K2 + Falang, проблема с поиском

Автор x1

Ответов: 1
Просмотров: 2690
Последний ответ 07.02.2022, 16:15:37
от x1
Невозможно создать пункт меню K2

Автор vittorio

Ответов: 16
Просмотров: 3916
Последний ответ 24.01.2022, 16:16:31
от kot488
Не сохраняются параметры в пункте меню категория K2

Автор pyh

Ответов: 5
Просмотров: 2311
Последний ответ 21.09.2021, 04:56:14
от Alexs44
Проблема с датой

Автор nick71

Ответов: 0
Просмотров: 801
Последний ответ 02.03.2020, 20:44:18
от nick71
Проблема с нагрузкой на хостинг сервер Joomla 3.9.13 + K2+подсчет хитов

Автор Kokshetau

Ответов: 0
Просмотров: 1026
Последний ответ 27.01.2020, 10:53:02
от Kokshetau