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

travelcz

  • Осваиваюсь на форуме
  • 31
  • 2 / 0
Как изменить кодировку таблиц в базе данных.? Извиняюсь если я где-то проглядел такую тему. У меня стоит Jform я сделал русскую форму, все отображается ок, но так как сайт многоязычный мне нужно сделать эту же форму на чешском, и здесь у меня появилась проблема с отображением чешских букв, вот и подумал что это скорее всего из за кодировки таблиц в базе данных. Но как их поменять я не знаю. Поэтому прошу помощи у знающих людей.
« Последнее редактирование: 01.06.2010, 21:14:17 от 4webspot »
*

VoV_I_K

  • Новичок
  • 7
  • 0 / 0
не знаю поможет ли... возможо и ваще не в тему! но в mysql есть такая команда set names - паходу  задает кодировку выдаваемых данных
*

METTER

  • Захожу иногда
  • 169
  • 22 / 1
если Вы меняли что-то в файлах, то просмотрите, чтобы они были сохранены в кодировке UTF-8 ....
*

valagoff

  • Давно я тут
  • 984
  • 110 / 0
Кодировка должна быть UTF-8. А для чешского - добавь чешский язык на сайт.
*

travelcz

  • Осваиваюсь на форуме
  • 31
  • 2 / 0
Кодировка должна быть UTF-8. А для чешского - добавь чешский язык на сайт.
Да все верно сайт в UTF8 чешский тоже стоит. все нормально отображается , только Jform не дружит. Я посмотрел его таблицы в базе данных в кодировке  ср1251, и блин хоть убейте не знаю как кодировку изменить. Вот адрес моей головной боли
http://cz.pragaten.com/form1.html
*

AlexSmirnov

  • Завсегдатай
  • 1862
  • 272 / 16
  • Ищите и найдете
попробуйте:

alter table <jos_my_table_to_change> convert to character set utf8 collate utf8_general_ci;
« Последнее редактирование: 01.06.2010, 14:22:05 от 4webspot »
# Back the fufalo (особенно ту самую столкершу)! #
# ВАЖНО! Кайфую от удаления присланного в личку спама, почти как от любви (особенно по выходным). #
*

travelcz

  • Осваиваюсь на форуме
  • 31
  • 2 / 0
попробуйте:

alter table <jos_my_table_to_change> convert to character set utf8 collate utf8_unicode_ci;
Испробовал этот вариант но видимо где то небольшая ошибка получилась. Пишет вот что:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '<jos_jforms_fields_to_change> convert to character set utf8 collate utf8_general' at line 1
« Последнее редактирование: 01.06.2010, 14:22:55 от 4webspot »
*

travelcz

  • Осваиваюсь на форуме
  • 31
  • 2 / 0
Вот нашел как правильно изменить кодировку отдельной таблицы в базе данных:
ALTER TABLE  `jos_name_table` COLLATE  utf8_general_ci

Но в моём случае это не помогло, как были вопросы вместо чешских букв так и остались, есть у кого другие идеи по этому поводу.
*

valagoff

  • Давно я тут
  • 984
  • 110 / 0
Все файлы JForm сохранить в кодировке UTF-8 without BOM
*

travelcz

  • Осваиваюсь на форуме
  • 31
  • 2 / 0
Спасибо за помощь все заработало, поставил версию по новее и все встало на свои места, даже не знаю в чем косяк был.
*

Polosat

  • Захожу иногда
  • 202
  • 7 / 0
  • Мечты - это то, из чего сделано будущее
я менял кодировку вот так, всё работает

Код
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка #1050 при переносе базы данных на хостинг

Автор Ksen

Ответов: 7
Просмотров: 24781
Последний ответ 16.03.2020, 17:47:29
от Petrovich
[Решено] Проблема с авторизацией Invalid Token

Автор treX

Ответов: 100
Просмотров: 96489
Последний ответ 06.10.2019, 16:55:45
от PaLyCH
Как изменить межстрочный интервал в списке?

Автор kirill-juk

Ответов: 2
Просмотров: 1951
Последний ответ 28.10.2017, 18:51:40
от kirill-juk
Передача данных в форму при нажатии на ссылку

Автор usmdamir

Ответов: 4
Просмотров: 1637
Последний ответ 26.07.2017, 09:40:22
от usmdamir
Как проверить форму обратной связи [Решено]

Автор mafiozzzza

Ответов: 8
Просмотров: 6751
Последний ответ 30.05.2017, 11:34:11
от darkghost