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

Mitrich

  • Захожу иногда
  • 289
  • 524 / 13
  • Все можно. Но сначала учиться, учиться и учиться.
« Последнее редактирование: 16.12.2008, 17:27:17 от Mitrich »
*

Mitrich

  • Захожу иногда
  • 289
  • 524 / 13
  • Все можно. Но сначала учиться, учиться и учиться.
Как показали поиски Zend Optimizer под х64 не существует в принципе.
При попытках установить 32-х битную версию сервер рухнул и поднять я его не смог (почему то начал дублировать слэши в путях подключения библиотек ).
*

ablink

  • Осваиваюсь на форуме
  • 16
  • 1 / 0
Цитировать
Для систем х86 выполним крайне важную процедуру!
Скопируем файл
G:\WORK_SERVER\mysql \bin\libmySQL.dll
в
C:\WINDOWS\System32\
Без него на WinXP прикрутить MySQL к PHP не удалось. На Vista x64 такого шаманства не потребовалось.

Данную процедуру  необходимо выполнить с файлом
путь_к_php\libmysql.dll
С библиотекой из путь_к_mysql\bin\libmySQL.dll подключиться к mysql не получилось. Для проверки использовал скрипт http://www.softtime.ru/info/apache.php?id_article=98.
*

@lex

  • Захожу иногда
  • 113
  • 2 / 0
Здравствуйте установил  xampp вессий 1.7.3  выдает такую ошибку в меню в админке и на сайте Warning: Parameter 1 to modMainMenuHelper::buildXML() expected to be a reference, value given in C:\xampp\htdocs\virtmagazin\libraries\joomla\cache\handler\callback.php on line 99
Извиняюсь может не по теме но вот такая причина может скажите как решить
*

Dobreff

  • Захожу иногда
  • 214
  • 10 / 4
Да можноже готовый поставить  WAMPSERVER
*

Лис3

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
у меня немного по друглму. Конфигурация windows vista 64
Установил "WampServer2.2a-x64". Захожу в localhost. А мне в ответ:
Forbidden You don't have permission to access / on this server.
В меню программы жму кнопку "сделать доступным из вне". Снова в localhost - вроде все ок.
Захожу в http://localhost/phpmyadmin/ а мне там: Forbidden You don't have permission to access /phpmyadmin/ on this server.
Подскажите что отделать? Как заставить эту хрень работать?
Зарание спасибо.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

AJAX запрос со страницы с дополнительным запросом с сервера

Автор vlaew

Ответов: 13
Просмотров: 1648
Последний ответ 30.01.2014, 02:07:17
от vlaew