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

busik

  • Захожу иногда
  • 186
  • 7 / 0
Россия — родина ***еца
Да, у нас тут ***ец. Но это, видишь ли, такой как бы фоновый ***ец. Привычный, родной и даже местами любимый. Не разовый исполненный трагизма ***дец, который Случается или Приходит, а перманентный, который всегда с нами. Такой ***ец не откуда не «приходит», он тут абориген, раньше нас поселился, всегда был и вовеки пребудет. Еще и пращуры наши не родились, а ***ец уже витал незримо средь родных берез. Так что не он к нам пришел, а мы к нему — с тех пор и живем вместе. Он к нам частенько по-соседски заходит в гости, то к одному, то сразу ко многим. И не выгонишь, он тут хозяин.

Мы им, между прочим, даже гордимся — мол, такого ***еца, как у нас, ни у кого нету. Вот у вас там всего лишь жарко, песок и арабы, а у нас — сам ***ец. При здешнем климате жара и арабы не приживаются, а ***ец цветет и колосится. ***дец — он зверек пушной, ему тут уютно. Если Великий Устюг родина Деда Мороза, то вся Россия — родина ***еца. Да и сам Дед Мороз, если вдуматься, тот же ***ец, с бородой из ваты…

А потому у кого-то может быть демократия, диктатура, социализм, олигархия, а у нас один государственный строй на все времена. И строй этот — ***ец. У кого-то кризис, экономическая депрессия или сырьевая катастрофа — а у нас все он, родимый, ***ец.

«Ну, что у нас в экономике? — Да ***ец!» У кого-то царь, король, император, президент, премьер — а у нас персонифицированный ***ец на троне. И как бы он на рожу не выглядел, и как бы не назывался — должность его и суть все те же — ***ец. «Ну как тебе новый президент? — Да ***ец!» У кого-то землетрясение, наводнение, ураган, тайфун, смерч — а у нас — опа — опять он! И мы его именуем уже чисто для статистики — чернобыльский ***ец, ну или там саяно-шушенский, — но внутри всегда знаем, что это все тот же родной ***ец заходил. «Ну, что у нас опять случилось? — Да ***ец!» Мы его всегда ждем и не удивляемся, и даже говорим удовлетворенно: «Ну, давно пора было. Я ж говорил, что он вот-вот придет!». У кого-то война, или оккупация, или нашествие — а у нас опять он, ***ец. И будь у него хоть истинно арийское белесое рыло, хоть монголо-татарское немытое мурло — но мы его узнаём сразу и безошибочно. «А, это ты, родной, опять пришел?» Ну, заходи, хуле. Какой ни есть, а свой, привычный.

Я вообще не понимаю, почему б нам не переименоваться из России и в ****ец. ****ец Советских Социалистических Республик например. Ну, или ****ец Независимых Государств. Ну или просто Великий ****ец От Моря До Моря - это кому пафосу не хватает.

И живем мы тут в Великом ****еце, и на великом могучем ***ецком языке обсуждаем свои скорбные ***ецкие дела. И на каждый вопрос: «Ну, как жизнь?», заданный произвольно выбранному со***ецнику, гарантированно получишь ответ: «Да ***ец!»
© http://semiurg.livejournal.com
« Последнее редактирование: 04.02.2011, 00:30:39 от busik »
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

У нас теперь полиция! (детям до 18 ни-ни))

Автор Taatshi

Ответов: 18
Просмотров: 4145
Последний ответ 20.07.2011, 18:46:54
от Larisa