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

MuraDweb

  • Захожу иногда
  • 267
  • 124 / 1
Нам понадобится phpMyAdmin (или любая другая программулька позволяющая выполнить sql запрос к нужной нам базе данных)
На примере phpMyAdmin: - заходим в данный mysql клиент и нажимаем на вкладку SQL в главном окне.
Затем выбираем один из способов описаных ниже, копируем код и вставляем в поле "Выполнить SQL запрос (ы) на БД" и жмем "Пошел"/"Выполнить". Вот собственно и всё.

Вариант 1. Восстанавливаем пароль СуперАдмина (по умолчанию) - Логин: admin Пароль: admin
Код
UPDATE `jos_users` 
SET `name` = 'Super Administrator', `username` = 'admin', `email` = 'admin@admin.ru', `password` = md5('admin'),
`usertype` = 'Super Administrator', `block` = '0', `sendEmail` = '1', `gid` = '25',
`registerDate` = '2009-01-01 00:00:00', `lastvisitDate` = '2009-01-01 00:00:00', `activation` = '', `params` = ''
WHERE `id` = '62';

или Вариант 2. Создаем абсолютно нового СуперАдмина - Логин: temp Пароль: temp
Код
INSERT INTO `jos_users` (`id`, `name`, `username`, `password`, `email`, `usertype`, `gid`, `params`)
VALUES (LAST_INSERT_ID(), 'temp', 'temp', md5('temp'), 'temp@temp.ru', 'Super Administrator', 25, '');
 
INSERT INTO `jos_core_acl_aro` (`id`, `section_value`, `value`,  `order_value`,  `name`, `hidden`)
VALUES (LAST_INSERT_ID(), 'users', LAST_INSERT_ID(), '0', 'temp', '0' );
 
INSERT INTO `jos_core_acl_groups_aro_map` (`group_id`, `section_value`, `aro_id`)
VALUES ( 25, '', LAST_INSERT_ID() );
* Слово temp можете заменить на любое, если это вам не нравиться.

ЗЫ Запросы в приципе могли бы быть и покороче, но я намеренно привел их полными во избежании всяких накладок.
ЗЫ После этого, Не забудьте сразу же сменит пароль на более стойкий, но уже из админ панели Joomla! :).
ЗЫЫ Рекомендую также наглядное пособие Восстановление пароля любой учетной записи (в картинках)
Удачи !
« Последнее редактирование: 30.05.2010, 11:39:54 от MuraDweb »
Яндекс.Деньги: 41001423568435
Webmoney: R 377548789269 | Z 421465848009 | E 126339514076 | U 413960261029
-
А, Вы читали ? Правила форума | FAQ J! 1.5 | FAQ J! 1.0
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Изменение адреса к странице administrator

Автор phaestos

Ответов: 1
Просмотров: 32217
Последний ответ 24.12.2008, 00:24:52
от ChaosDay
Восстановление пароля любой учетной записи (в картинках)

Автор ..С...е...р...ы...й..

Ответов: 0
Просмотров: 42538
Последний ответ 07.12.2008, 18:59:41
от ..С...е...р...ы...й..