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

stardel

  • Завсегдатай
  • 1943
  • 22 / 0
Заливка на хост
« : 15.06.2009, 18:18:51 »
Сайт сделал,домен и хост на 3 сайта купил,но вот проблема с заливкой:есть папка Public_html,по идее в неё всё надо,но в ней есть папка с названием моего сайта....не пойму для чего...и куда лить?написал в суппорт-но они  уже пол дня отвечают.Кто нибудь может подсказать?Cпасибо!
*

Antosha

  • Захожу иногда
  • 420
  • 52 / 0
  • Плохо спорить плохо
Re: Заливка на хост
« Ответ #1 : 15.06.2009, 18:21:57 »
Заливайте в папку с название вашего сайт. Просто у вас все 3 сайта будут, как мне кажется, на одном фтп, вот Вам хостер и создал первый. Часто бывает проще, в папке public_html, создаются папки www1, www2,  и т.д.
<a href="http://joomlablog.ru/">JoomlaBlog</a>
*

stardel

  • Завсегдатай
  • 1943
  • 22 / 0
Re: Заливка на хост
« Ответ #2 : 15.06.2009, 18:45:36 »
Блин,при попытке распаковки выдал : Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 539 bytes) in /home/saitm/public_html/saitm/pclzip.lib.php on line 3387

мне посоветовали прописать в .htaccess   <php_value memory_limit 64M>  у меня счас он выглядит так:

# -FrontPage-

IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*

<Limit GET POST>

order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
AuthName saitm.ru
AuthUserFile /home/saitm/public_html/_vti_pvt/service.pwd
AuthGroupFile /home/saitm/public_html/_vti_pvt/service.grp


куда прописывать?Помогите плизз!!!

*

stardel

  • Завсегдатай
  • 1943
  • 22 / 0
Re: Заливка на хост
« Ответ #3 : 15.06.2009, 19:08:29 »
Отвечаю сам себе:

<Limit GET POST>

php_value memory_limit 64M
order deny,allow
deny from all
allow from all
</Limit>
*

Antosha

  • Захожу иногда
  • 420
  • 52 / 0
  • Плохо спорить плохо
Re: Заливка на хост
« Ответ #4 : 15.06.2009, 19:59:35 »
А у моего хостера вообще какие-проблемы с архивами, либо я не так делаю, но часто заливаю сайт тупо через ФТП по принципу "все подряд". Правда процесс этот утомительный слишком. =)
<a href="http://joomlablog.ru/">JoomlaBlog</a>
*

stardel

  • Завсегдатай
  • 1943
  • 22 / 0
Re: Заливка на хост
« Ответ #5 : 16.06.2009, 19:57:46 »
чё то не фига не работает......может что то не правильно делаю....ошибка:

Warning: require_once(/home/saitm/public_html/includes/defines.php) [function.require-once]: failed to open stream: No such file or directory in /home/saitm/public_html/index.php on line 21

вот строка 21 :require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );


может что то не то с БД?
*

Antosha

  • Захожу иногда
  • 420
  • 52 / 0
  • Плохо спорить плохо
Re: Заливка на хост
« Ответ #6 : 16.06.2009, 20:11:51 »
Файлы не может найти. Проверьте их наличие, может быть не все переписалось
<a href="http://joomlablog.ru/">JoomlaBlog</a>
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема после заливки на хост

Автор ipock

Ответов: 3
Просмотров: 1360
Последний ответ 04.07.2012, 20:59:36
от SK
Пустая база данных при импорте на хост

Автор art-m1987

Ответов: 10
Просмотров: 1730
Последний ответ 28.04.2012, 11:52:50
от art-m1987
Заливка фона текста

Автор Shamil

Ответов: 18
Просмотров: 2438
Последний ответ 04.03.2012, 12:14:29
от Shamil
Заливка прайс-листа с меняющейся ценой и наличием товара.

Автор grosster

Ответов: 3
Просмотров: 2894
Последний ответ 17.01.2012, 22:34:29
от tefun
ошибка при импорте базы данных на хост

Автор interested_

Ответов: 3
Просмотров: 1344
Последний ответ 05.07.2011, 20:38:37
от Lex