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

RaidanS

  • Новичок
  • 3
  • 0 / 0
У меня подобная ошибка возникает после установки компонента fieldattach! С сессией все хорошо, Не могу даже создать материал, не говоря о редактировании.
Удаляю компонент - все становится ОТЛИЧНО. Как формируется эта прямая ссылка, может кто знает? как заходить по защищенной?
*

RaidanS

  • Новичок
  • 3
  • 0 / 0
AlexeyGal, спасибо за пояснение!

Однако странно все это, при авторизации в таблице __session появляются непонятные записи с "client_id 0, guest 1" и "client_id 1, guest 1", userid 0 и пустым username. Хотя никто кроме меня не логинится, Пользователь только один, да и сайт у меня на Xampp-e.

работал в Chrome, открыл Opera - там таких сложностей с созданием материала пока не наблюдаю, но начал беспокоиться о безопасности сайта, откуда все эти лишние сессии?
« Последнее редактирование: 01.12.2015, 13:14:34 от RaidanS »
*

Dian

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
Аналогичная проблема, только на Joomla 3.4.1 и в ней нет файла controllerform.php (ну по крайней мере я его не нашел). Есть вариант как исправить ?
*

Sedoy

  • Давно я тут
  • 897
  • 87 / 10
  • Интересно,в какой кодировке пишут врачи?
* Есть вариант как исправить ?

у меня такое появилось - вышел из админки зашел - пропало
Что б правильно задать вопрос - нужно знать на него ответ!
FAQ по Joomla!
Где скачать шаблоны Joomla Статьи и обзоры Желаю Вам здоровья в личной жизни - живите долго и часто :)
*

Sedoy

  • Давно я тут
  • 897
  • 87 / 10
  • Интересно,в какой кодировке пишут врачи?
оказалось, что просто выйти - зайти не панацея....
"прицепилось" к одному материалу и не дает править
в Joomla 347
Что б правильно задать вопрос - нужно знать на него ответ!
FAQ по Joomla!
Где скачать шаблоны Joomla Статьи и обзоры Желаю Вам здоровья в личной жизни - живите долго и часто :)
*

edd

  • Новичок
  • 6
  • 1 / 0
Joomla! 3.4.7 Stable [ Ember ] 21-December-2015 16:00 GMT
Такая же проблема, решаю truncate table *_session
=)
*

eAndy

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
  • eAndy Money Lab.
Joomla! 3.4.7 Stable
Такая же проблема, помогли выход из админки и повторная авторизация
*

Toxa33

  • Захожу иногда
  • 81
  • 0 / 0
Добавил материал с фронта, сохранил, материал добавился, тут же захожу в редактирование и уже не пускает, пишет "у вас нет прав".
Никто не разобрался с проблемой? как ее победить?

П.С. Сайт наполняет обычный менеджер, админка ему не доступна. Вход-выход не помогает.
« Последнее редактирование: 16.12.2016, 12:08:11 от Toxa33 »
*

mark1

  • Захожу иногда
  • 394
  • 39 / 2
Добавил материал с фронта, сохранил, материал добавился, тут же захожу в редактирование и уже не пускает, пишет "у вас нет прав".
Никто не разобрался с проблемой? как ее победить?

П.С. Сайт наполняет обычный менеджер, админка ему не доступна. Вход-выход не помогает.
Я вычитал у автора Akeeba Admin tools, что достаточно сделать очистку таблицы _session, как и написал выше edd. Сам только что опять нарвался на эту багу, ничего не редактировалось в админке вообще. Догадка такова: я развернул бекап, и со старта в таблице уже были сессии, сделанные до разворачивания (а они по идее по таймауту уже 100 раз как мёртвые). Вот админка и слала меня лесом.
Решение : почистить таблицу _session руками, или в Akeeba Admin Tools жмакнуть кнопку "Purge sessions".
*

Toxa33

  • Захожу иногда
  • 81
  • 0 / 0
Спасибо за помощь, но как быть обычным пользователям, которые работают только с фронтом? На данный момент приходится менять браузер.
*

gromlan

  • Осваиваюсь на форуме
  • 35
  • 0 / 0
И у меня такая проблема. Заметил еще, что проблема проявляется только на собственном впс, если тот же сайт запустить на хостинге, то проблем не будет. Так что вопрос в настройках сервера! Только не понятно, что именно настраивать. Может у кого-то будут идеи?

upd: нужно выключить кеш-контроль браузера. В конфиге nginx "expires 24h"; поменял на "expires off"; затем почистить куки и кеш браузера. Проблема решена.
« Последнее редактирование: 05.02.2018, 01:12:07 от gromlan »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

как выводить категории на главной странице.

Автор makarovse

Ответов: 7
Просмотров: 2769
Последний ответ 03.04.2022, 19:50:42
от THE KILLERS
Как восстановить доступ к админке сайта?

Автор Nainta

Ответов: 8
Просмотров: 2019
Последний ответ 21.03.2019, 23:06:07
от ChaosHead
Навигация на странице. Почему не все ссылки работают?

Автор Ирина Поехали

Ответов: 0
Просмотров: 1814
Последний ответ 24.01.2018, 11:58:14
от Ирина Поехали
Порядок плагинов на странице

Автор intcorp

Ответов: 5
Просмотров: 1996
Последний ответ 26.04.2017, 23:51:10
от UN_Tony
Как изменить отображение материала на главной странице?

Автор pashafox

Ответов: 1
Просмотров: 1471
Последний ответ 06.03.2017, 16:02:20
от darkghost