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

alexeyhead

  • Захожу иногда
  • 68
  • 1 / 0
Вечер добрый всем
Перенес с одного сервера на другой сайт на Joomla 1.5. При попытке зайти в админку выдает:
        JAuthentication: :authenticate: Failed to load plugin: plgauthenticationjoomla
        Username and password do not match or you do not have an account yet.

Что я только не делал.. и плагин plg_authentication_joomla в таблице jos_extensions включал/выключал через phpMyAdmin,
удалял/добавлял плагин командами:

Код
DELETE FROM `jos_extensions` WHERE `extension_id` = 401;
INSERT INTO `jos_extensions` VALUES(401, 'plg_authentication_joomla', 'plugin', 'joomla', 'authentication', 0, 1, 1, 1, '', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0);
и нового пользователя заводил, существующему пароль скидывал... И ничего не помогло
Может кто знает что еще можно сделать, чтобы сайт заработал? Целый день ищу как решить.
*

SK

  • Живу я здесь
  • 2155
  • 164 / 0
А сам сайт работает?
Обсуждали здесь на форуме когда-то похожую проблему.
Поищите поиском.
Насколько помню, делалось предположение, что шаблон виноват.
Попробуйте перезалить его.
*

alexeyhead

  • Захожу иногда
  • 68
  • 1 / 0
сайт тоже не работает. ошибка 404
видел и читал похожую тему в ветке 2.5/1.7 - ничего нового не почерпнул
*

nixsystem

  • Захожу иногда
  • 207
  • 10 / 0
Попробуйте перезалить файл
Код
/plugins/authentication/joomla/joomla.php
Если не поможет, то проверьте, не встречается ли в этом файле
Код: php
 =& 
например в таком виде
Код: php
$db =& JFactory::getDbo();
если да - пробуйте удалить
Код
&
*

alexeyhead

  • Захожу иногда
  • 68
  • 1 / 0
Дело оказалось в неполной переноске сайта. После перезаливки всё чудненько работает
Извиняюсь за паникёрство
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

JError Unable to load Database Driver

Автор ApTypka

Ответов: 7
Просмотров: 5621
Последний ответ 11.09.2019, 16:19:54
от Physicist
[Решено] failed to open stream: No such file or directory

Автор kbeplastik-ru

Ответов: 13
Просмотров: 46188
Последний ответ 01.11.2013, 22:20:55
от AlimovTILLO
[Решено] Ошибка при первоначальной установке: JError Unable to load Database Driver:

Автор karat

Ответов: 4
Просмотров: 8352
Последний ответ 26.09.2013, 14:25:53
от Cueball
DB function failed with error number 1146

Автор DeadHawk

Ответов: 2
Просмотров: 2922
Последний ответ 24.02.2012, 14:58:53
от danss2
Ошибка jtablesession::Store Failed DB function failed with error number 126

Автор HavOk

Ответов: 4
Просмотров: 4479
Последний ответ 26.01.2012, 15:23:42
от dennioushen