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

newleax

  • Захожу иногда
  • 234
  • 23 / 0
Слетели права
« : 16.02.2009, 23:27:41 »
Слетели все права на 777.
Как их теперь восстановить? Все папки 755, а файлы 644?
Там есть кое-какие файлы, насколько я помню, которые должны иметь повышенные права, но где это взять?

У меня есть подозрение, что я знаю в чем причина.
Была проблема с загрузкой файлов на сайт и в галерею. Попросила одного человека, он "помог", у меня стало грузится действительно. Похоже он просто взял да и открыл глобально права. И главное не сказал... стоит сайт открытый... кошмар.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Слетели права
« Ответ #1 : 16.02.2009, 23:29:18 »
Ну на самом деле, это не такая уж и трагедия. В том смысле, что если на сайте нет уязвимых расширений, то особого вреда от прав 777 нет.
*

newleax

  • Захожу иногда
  • 234
  • 23 / 0
Re: Слетели права
« Ответ #2 : 16.02.2009, 23:31:36 »
Да, ооой, ладно... а то я уж испугалась... но все равно пожалуй потыкаю.
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
Re: Слетели права
« Ответ #3 : 17.02.2009, 00:42:18 »
не тыкайте!
если права упали в меньшую сторону, но при этом юзер/группа не изменилась, то скорее всего это хостинговые проверки, дабы закрыть возможный уязвимости
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
Re: Слетели права
« Ответ #4 : 17.02.2009, 00:43:58 »
ээ, тьфу тут все стало в 777?
какое нафиг - ничего страшного, проверяйте свой сатй на наличие лишних скриптов. спросите хостера, менял ли он права на сайте.
Само по себе ничего не меняется.
*

newleax

  • Захожу иногда
  • 234
  • 23 / 0
Re: Слетели права
« Ответ #5 : 17.02.2009, 08:58:26 »
Фей ну я же сказала выше, что знаю, почему это могло произойти.
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
Re: Слетели права
« Ответ #6 : 17.02.2009, 09:13:11 »
попросите хостера для всех каталогов указать 755
а для файлов 644

там на 5 минут работы ))))
*

newleax

  • Захожу иногда
  • 234
  • 23 / 0
Re: Слетели права
« Ответ #7 : 17.02.2009, 13:59:29 »
Фей господи, ну что вы такое вот говорите не подумав а?
У меня не хостинг, а VPS. Доступ к глобальным правам у меня у самой есть.
Дело не в этом.
Ну выключу я. И опять сидеть с неработающими скриптами? Ведь человек этот не случайно же все это включил... вопрос не в том, чтобы все взять и тупо закрыть, а в том, чтобы закрыть только то, что нужно закрыть.

В общем не берите в голову...
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
Re: Слетели права
« Ответ #8 : 17.02.2009, 14:04:34 »
я понимаю, когда хостинг (да все равно хоть выделенный сервак) настроен так, что нужны права 777, а выставлять на все 777 только из-за того, что какой-то скрипт не может работать.....

хотя как хотите...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Права на папки

Автор stardel

Ответов: 1
Просмотров: 2096
Последний ответ 13.11.2009, 00:16:39
от Xom9lk
Новые группы и их права.

Автор DK-Scorp

Ответов: 7
Просмотров: 2676
Последний ответ 22.07.2009, 17:02:35
от Bickaze
где я могу редактировать авторские права

Автор renat_sh

Ответов: 4
Просмотров: 3235
Последний ответ 07.06.2009, 21:43:00
от Loh
Невозможно поставить права для записи на ftp

Автор Иалэ

Ответов: 4
Просмотров: 2155
Последний ответ 22.12.2008, 20:39:36
от Иалэ
Как настроить права на разделы

Автор mahoune

Ответов: 2
Просмотров: 2081
Последний ответ 24.09.2008, 14:01:38
от mahoune