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

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: ОбЪявить переменную в модуле
« Ответ #30 : 28.12.2014, 22:55:00 »
Не кидайтесь умными фразами, если не хотите помоч то просто пройдите мимо... От того что вы подсказали мануал мне легче нес тало. А всем остальным реально большое спасибо за помощ.
Спасибо за минус :) Это не умные фразы, Вы бы хоть чуток своими мозгами пошевелили. Но, видимо привыкли на чужих выезжать...
*

jservice

  • Захожу иногда
  • 118
  • 1 / 0
Re: ОбЪявить переменную в модуле
« Ответ #31 : 28.12.2014, 23:05:34 »
Да не зачто... И не на чужих мозгах ... Если я что то не знаю это не значит что я пришел мол сделайте за меня. Я попросил помощи подсказать.Я если не хочу просто отвечать я этого не делаю. Ну видимо от человека зависит... Но после вашей типа помоши нашелся нормальный человек и подсказал. за что ему большая благодарность.  А вас не кто не заставляет отвечать если не хотите дело ваше...Но и такие подсказки они как мертвому припарки...Хотя я 100%  уверен вы бы могли под сказать если бы было желание...
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: ОбЪявить переменную в модуле
« Ответ #32 : 29.12.2014, 07:56:18 »
Я Вам уже в этой теме все подсказал, что было необходимо. Дал Вам ссылку на мануал, чтобы Вы сами додумались. Но, видимо Вы считаете себя мертвым в плане программирования и обучения, раз для Вас это припарки. На этот раз нашелся тот, кто выложил Вам все на блюдечке, но такие люди будут не всегда. Что тогда будете делать? Печально.

Удачи в разработке - она Вам понадобится. И с наступающим.
*

jservice

  • Захожу иногда
  • 118
  • 1 / 0
Re: ОбЪявить переменную в модуле
« Ответ #33 : 29.12.2014, 08:03:43 »
Я вам скажу одно... Я пришел сюда на форум не для того чтоб за меня кто то что то сделал, а пришел узнать что то новое.Или вы считаете что форум не для того создан чтоб делится и учится?

Есть мануалы когда нормально расписаны - а есть такие как вы дали что там не особо разберешся.

Я желаю вам того, той же удачи   в вашей жизни и вам это тоже пригодится, так как если вы так помогаете новичкам которые не все знают как вы то она вам точно пригодится. Я считаю если не хочеш поделится знаниями то луче пройти мимо а не тупо кинуть линк на какой то заумный мануал. И вас с наступающим.

Вообщем все это лирика. Как я вижу ваше задето  самолюбие...

Сори за оффтоп админы.
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: ОбЪявить переменную в модуле
« Ответ #34 : 29.12.2014, 08:40:50 »
Я вам скажу одно... Я пришел сюда на форум не для того чтоб за меня кто то что то сделал, а пришел узнать что то новое.Или вы считаете что форум не для того создан чтоб делится и учится?
Создан. Но извините, но из этой темы я вижу обратное. Все сделали за Вас. А если бы Вы сделали сами, и прочитали по ссылочке "заумный" мануал, то вместо вот этой ненужной конструкции:
Код: php
$params = new JRegistry($params);
$mail_to = $params->get('mail_to');

сделали проще:
Код: php
$mail_to = $params->mail_to;

И то, это лишнее объявление переменной, можно было бы сразу использовать в коде $params->mail_to.

Есть мануалы когда нормально расписаны - а есть такие как вы дали что там не особо разберешся.

Я желаю вам того, той же удачи   в вашей жизни и вам это тоже пригодится, так как если вы так помогаете новичкам которые не все знают как вы то она вам точно пригодится. Я считаю если не хочеш поделится знаниями то луче пройти мимо а не тупо кинуть линк на какой то заумный мануал. И вас с наступающим.
С каких это пор официальный мануал по PHP стал таким, в котором не разобраться? И да, я кстати тоже пишу мануалы, может пригодится. И знаниями тоже делюсь - почти 8 лет на форуме.

Вообщем все это лирика. Как я вижу ваше задето  самолюбие...

Сори за оффтоп админы.
Да какое самолюбие? Дайте покой :) За это время на форуме я на такое насмотрелся, что Ваша тема и рядом не стояла. Я же для Вас стараюсь, пытаюсь помочь, направить на путь обучения, а не потребления. Поверьте мне, копи пэйст никогда не обучит. Читайте, вникайте, пытайтесь. Тогда голова наполнится знаниями.

Еще раз с наступающим ;)
*

jservice

  • Захожу иногда
  • 118
  • 1 / 0
Re: ОбЪявить переменную в модуле
« Ответ #35 : 29.12.2014, 08:46:09 »
Я скорее всего был не прав по отношению к вам.За это простите. Но для меня тот мануал реально написан на другом языке.Так как я не заканчивал не каких учириждений по программированию а учится интересно... Да был двоишником в школе  :'(
Так что вот так вот... ;)
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: ОбЪявить переменную в модуле
« Ответ #36 : 29.12.2014, 09:04:22 »
jservice, может быть, начнете тоже кому-нибудь помогать? А то вы все учите других, как правильно помогать. Поверьте, желающих это делать все меньше. Меня изначально там не было, поэтому можно еще раз посоветовать пройти мимо, минусовать и т.д., благо я уже давно решил больше никому не ставить минусов.
Прошу прощения за off-topic.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

jservice

  • Захожу иногда
  • 118
  • 1 / 0
Re: ОбЪявить переменную в модуле
« Ответ #37 : 29.12.2014, 09:13:36 »
Конечно начну помогать как придет время. А пока что я сам учусь... А чтоб не минусовали нормально общайтесь с людьми в нормальном тоне...
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: ОбЪявить переменную в модуле
« Ответ #38 : 29.12.2014, 11:56:04 »
Да был двоишником в школе  :'(
"кто хочет ищет возможности, кто не хочет оправдания"!
Я тоже был двоешником в школе, это не помешало мне изучить PHP...

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

Подключение сторонних библиотек в модуле J4

Автор denism300

Ответов: 6
Просмотров: 836
Последний ответ 30.12.2022, 19:58:09
от denism300
Рекурсия в модуле

Автор alpha_ru

Ответов: 19
Просмотров: 1875
Последний ответ 20.07.2017, 19:25:11
от passer
Дополнительное поле в модуле

Автор paskal

Ответов: 21
Просмотров: 2623
Последний ответ 27.08.2016, 00:59:55
от robert
Запись в БД из формы в плагине (модуле). Как!

Автор Sergeyy

Ответов: 13
Просмотров: 1591
Последний ответ 13.11.2015, 11:01:18
от Sergeyy
Ошибка 1005 при sql-запросах в своем модуле

Автор dv-cto

Ответов: 2
Просмотров: 1601
Последний ответ 07.02.2015, 21:30:50
от dv-cto