Подскажите как правильно обратиться к методу плагина из темплета? Пробую тригернуть

зарегистрированный ивент в плагине, но не получаю результат работы хендлера
$dispatcher = Factory::getApplication()->getDispatcher();
$eventResult = $dispatcher->dispatch('myEvent');

15 ответов

24 просмотра

Factory::getApplication->triggerEvent

На j4 или j3? и конкретного плагина или всех плагинов группы?

Pavel- Автор вопроса
Igor Berdichevskiy
На j4 или j3? и конкретного плагина или всех плаги...

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

Pavel- Автор вопроса
Sergey Tolkachyov
Factory::getApplication->triggerEvent

$result = Factory::getApplication()->triggerEvent('myEvent'); в ресалте пустой массив

Pavel
j4 для моего плагина, мне нужно обратиться к метод...

public static function triggerPlugin($type = null, $plugin = null, $event = null, $args = array()) { if (empty($type) || empty($plugin) || empty($event)) return false; if (self::$_plugins === null) self::$_plugins = array(); $key = 'plg_' . $type . '_' . $plugin; if (!isset(self::$_plugins[$key])) { // Initialize plugin $className = 'plg' . $type . $plugin; if (PluginHelper::getPlugin($type, $plugin)) { if (!class_exists($className)) PluginHelper::importPlugin($type, $plugin); Factory::getLanguage()->load($key, JPATH_ADMINISTRATOR); self::$_plugins[$key] = $className; } else self::$_plugins[$key] = false; } // Get plugin if (!$plugin = self::$_plugins[$key]) return false; if (!method_exists($plugin, $event)) return false; $result = false; if ((new Version())->isCompatible('4.0')) { /* @var \Joomla\Event\Dispatcher $dispatcher */ $dispatcher = Factory::getApplication()->getDispatcher(); $listeners = $dispatcher->getListeners($event); foreach ($listeners as $listener) { if ((is_a((new ReflectionFunction($listener))->getClosureThis(), $plugin))) { $call = false; if ($args instanceof Event) $call = $args; elseif (\is_array($args)) $call = new Event($event, $args); if ($call) { $listener($call); if (isset($call['result']) && !is_null($call['result'])) $result = $call['result'][0]; } } } } else { $dispatcher = JEventDispatcher::getInstance(); $observers = $dispatcher->get('_observers'); foreach ($observers as $observer) { if (is_a($observer, $plugin)) { $result = call_user_func_array(array($observer, $event), $args); break; } } } return $result; }

Sergey Tolkachyov
Factory::getApplication->triggerEvent

Тригернет все доступные плагины по этому event

Pavel
$result = Factory::getApplication()->triggerEvent(...

Название ивента вставьте своё

Pavel- Автор вопроса
Pavel
screenshot

А здесь не myEvent))

Pavel- Автор вопроса
Sergey Tolkachyov
А здесь не myEvent))

в массиве регистрируется ивент и колбек, разве не так?

Pavel- Автор вопроса
Igor Berdichevskiy
public static function triggerPlugin($type = null,...

чтото я не вижу в j4 такого метода

Похожие вопросы

Обсуждают сегодня

Доброго вечера. Поскажите, как изменить код number_fomat, что цена была без копеек. <?php if(!empty($value)) { $parts = explode('.',$value); echo number_format ($part...
Katerina Beliayeva
12
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
слушайте, на многих старых сайта на 1.4 вижу этот алерт конкретно - смущает что ругается на index.php и manager/index.php Сайты друг с другом никак не связаны хостингами и об...
Jacov Borisov
5
core\config\database\connections\default.php На всякий случай проверь всё же файл <?php return [ 'driver' => env('DB_TYPE', 'mysql'), //$database_type 'host' => env('D...
Andrey K
2
добрый день. Подскажите, есть сайт на 1.4.7 и я хочу обновиться, особо ничего не меняя. мне выбирать версию 1.4.35 или третью ветку? и можно ли обновлять "как есть", или нужно...
Digital Cat
12
А это вообще исполнимо - посчитать прям всех-всех? Я же так понимаю, всегда найдется кто-то, кто не определился, не посчитался или еще как-нибудь испортит картинку
Julia Cherri
7
#оффтоп А кто-то уже видел, что там ребята из roistat настраивают на сайте? Очень хотят в админку "настроить аналитику бесплатно"
Julia Cherri
6
мои еще в начале пути, похоже. А куда уходят, если могут?
Julia Cherri
6
Как думаете, такою юмор на сайте лишним будет?
М
2
без автосабмита все равно должен?
Николай Архипов
2
Карта сайта