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

epson950

  • Захожу иногда
  • 119
  • 2 / 1
Задача в следующем.
Человек (исполнитель) предлагает услугу, вводит ее описание через форму на сайт (категория, цена, место оказания и т.п.). Список услуг публикуется на сайте (без указания координат исполнителя). Нужны фильтры поиска (по категории, цене месту и т.п)
Кому эта услуга нужна оставляют заявку, также через форму. Исполнитель видит заявки которые оставили ему (также без координат). Он может принять эту заявку и ему будут показаны координаты. После этого он должен оплатить какую то денежку сайту, после получения которой админ сайта ставит пометку на заявке, что она выполнена (на данном этапе вопрос об автоматизации оплаты не стоит). До пометки об оплате исполнитель не может принимать других заявок.
Помогите подобрать компонент с помощью которого это можно выполнить. Он может быть платным.
Пробовал это делать на ZOO+JBZoo, с формами все нормально, но как их между собой связать понять не могу :( Может есть что более заточенное под такую задачу?
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Сайт услуг, на чем можно сделать?
« Ответ #1 : 23.11.2015, 03:19:42 »
ZOO+JBZoo идеально подойдет как основа.
Ну а детали в любом случае придётся заказывать.
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
Re: Сайт услуг, на чем можно сделать?
« Ответ #2 : 24.11.2015, 18:47:27 »
@epson950
Отказаться вам надо от такой работы, выполнить можно но что на Joomla что на более подходящей cms или framework стоимость не одна сотня тыр.
P.s. найдите профессионалов для таких задач
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Сайт услуг, на чем можно сделать?
« Ответ #3 : 24.11.2015, 21:05:50 »
JBZoo+RSForms. Особо программировать ничего не надо. Практически всё в админке реализуемо.
*

epson950

  • Захожу иногда
  • 119
  • 2 / 1
Re: Сайт услуг, на чем можно сделать?
« Ответ #4 : 24.11.2015, 23:16:15 »
JBZoo+RSForms. Особо программировать ничего не надо. Практически всё в админке реализуемо.
А можно спросить, в каком направлении двигаться? хотя бы кратко?
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Сайт услуг, на чем можно сделать?
« Ответ #5 : 24.11.2015, 23:29:20 »
В сторону изучения работы с Zoo. Есть мануалы на сайте JBZoo.ru. Есть видеоуроки даже, где-то попадались на ютьюбе. Я не знаю, чем конкретно вам помочь. Тут много нужно изучать.
*

epson950

  • Захожу иногда
  • 119
  • 2 / 1
Re: Сайт услуг, на чем можно сделать?
« Ответ #6 : 25.11.2015, 01:32:14 »
Вопрос в том, как связать Zoo и RSForm
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Сайт услуг, на чем можно сделать?
« Ответ #7 : 25.11.2015, 02:41:16 »
RSForm можно связать с БД для записи и чтения. Как и с любым другим компонентом. Это в тех редких случаях, когда возможностей JBZoo не хватит.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

SP Page Builder как сделать ссылку на картинке в аддоне image-overlay

Автор newkrasno

Ответов: 0
Просмотров: 2913
Последний ответ 12.02.2021, 07:21:05
от newkrasno
SP Page Builder как сделать ссылку на картинке в аддоне Feature box

Автор Asergey

Ответов: 2
Просмотров: 6981
Последний ответ 08.02.2021, 12:10:39
от newkrasno
как сделать с помощью SP Page Builder PRO 2.3.5?

Автор samsonik

Ответов: 4
Просмотров: 2803
Последний ответ 16.04.2017, 18:42:35
от samsonik
Можно ли с помощью SP Page Builder редактировать "Quickstart" шаблона, например JoomShaper?

Автор space_impact

Ответов: 2
Просмотров: 1994
Последний ответ 15.03.2017, 16:10:07
от voland
Ребята я два года не пойму как это сделать!

Автор easy_simple

Ответов: 10
Просмотров: 1985
Последний ответ 26.06.2016, 21:49:39
от AlekVolsk