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

tmpnikl

  • Захожу иногда
  • 497
  • 4 / 0
Обновил Joomla до 3.7.2
На главной странице превью новостей, нажимаешь подробнее выходит такое сообщение
404 Not Found nginx
.htaccess существует, какие есть ещё варианты?
*

tmpnikl

  • Захожу иногда
  • 497
  • 4 / 0
Re: Ссылка Подробнее-> 404 Not Found nginx
« Ответ #1 : 13.06.2017, 12:36:01 »
Скопировал и запустил сайт на localhost, ссылка в превью материала подробнее работает... В чём может быть проблема?
*

tmpnikl

  • Захожу иногда
  • 497
  • 4 / 0
Re: Ссылка Подробнее-> 404 Not Found nginx
« Ответ #2 : 13.06.2017, 12:40:07 »
На реальном сайте (не на localhost) выключил SEF всё заработало, в чём может быть проблема, мне надо, чтоб был включен SEF
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Ссылка Подробнее-> 404 Not Found nginx
« Ответ #3 : 13.06.2017, 12:45:00 »
<vanga mode on>
Может, на том хостинге, что указан в стартпосте, не установлен apache, а сразу nginx, и нужно конфигурировать файл для nginx.
Хотя, саппорт бы конечно об этом сразу сказал..
А не.. там же были праздники и спросить саппорт никто не удосужился?
<vanga mode off>
*

tmpnikl

  • Захожу иногда
  • 497
  • 4 / 0
Re: Ссылка Подробнее-> 404 Not Found nginx
« Ответ #4 : 14.06.2017, 06:51:03 »
В общем проблема в том, что в админке постоянное предупрежд. о PHP7 и чтоб убрать это сообщение, в(на) хостинге выставлен режим работы PHP "FastCGI(Nginx+PHP+FPM)", после чего можно выбрать версию PHP7(иначе режим работы PHP "модуль Apache" и max. версия 5.6.30(native)), Как надо сконфигурировать .htaccess, чтоб при установке режим работы PHP "FastCGI(Nginx+PHP+FPM)" проблемы 404 не возникало?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Ссылка Подробнее-> 404 Not Found nginx
« Ответ #5 : 14.06.2017, 09:27:52 »
Как надо сконфигурировать .htaccess, чтоб при установке режим работы PHP "FastCGI(Nginx+PHP+FPM)" проблемы 404 не возникало?
в Nginx нет .htaccess, вернее он работать не будет
так что хоть конфигурируй хоть нет бесполезно :)
*

tmpnikl

  • Захожу иногда
  • 497
  • 4 / 0
Re: Ссылка Подробнее-> 404 Not Found nginx
« Ответ #6 : 15.06.2017, 06:13:04 »
Если проблема не решается  конфигурированием .htaccess, то есть ли какие-нибудь другие способы, или это из разряда не решаемых проблем?
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Ссылка Подробнее-> 404 Not Found nginx
« Ответ #7 : 15.06.2017, 12:45:35 »
Есть
Да и на форуме обсуждалось

Пробуйте, чистый nginx мало кто использует
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Joomla 3.3.4 nginx и конфиг htaccess

Автор bagas

Ответов: 16
Просмотров: 5292
Последний ответ 29.03.2023, 12:33:18
от SolopoV
Генератор QR кода для банка и ссылка на приложение банка

Автор shop-user

Ответов: 1
Просмотров: 658
Последний ответ 28.03.2023, 17:31:14
от marksetter
[Решено] Ссылка на домен и текущий шаблон в блоге категории

Автор goga_pgasovav

Ответов: 2
Просмотров: 865
Последний ответ 06.03.2023, 16:30:23
от goga_pgasovav
Обнаружена ошибка. Class 'JFormFieldPredefinedList' not found

Автор sevent45

Ответов: 14
Просмотров: 4454
Последний ответ 14.12.2022, 18:34:07
от peklor
Блок особенностей, как добавить в поле с информацией кнопку или ссылку Подробнее

Автор Alex from SPb

Ответов: 5
Просмотров: 839
Последний ответ 28.11.2022, 19:54:42
от marksetter