Новости 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 Ответов
  • 3828 Просмотров
*

ruslanaxti

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
не работает регистрация
« : 20.04.2012, 11:22:33 »
Установил на Joomla 2.5 компонент К2 2.5.6. На странице регистрации ввожу все данные, нажимаю кнопку зарегистрироваться, страница просто перезагружается и все! Регистрация не проходит, что делать? В чем причина?
*

droozhok

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Re: не работает регистрация
« Ответ #1 : 20.04.2012, 15:51:30 »
Установил на Joomla 2.5 компонент К2 2.5.6. На странице регистрации ввожу все данные, нажимаю кнопку зарегистрироваться, страница просто перезагружается и все! Регистрация не проходит, что делать? В чем причина?

вообще кривой какой-то модуль.
Я с ним уже намучился, но не всё поправил. В данном случае скорее всего что-то неплавильно заполнено. Возможно пароль короче 5 (кажется) символов.
Для отладки можно в файле libraries\joomla\form\form.php в методе validate добавить вывод переменных, например, вот так:

Код
			// Validate the field.
$valid = $this->validateField($field, $group, $value, $input);
echo 'valid='.$valid.'field='.$field.'group='.$group.'value='.$value.'input='.$input;
*

ruslanaxti

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: не работает регистрация
« Ответ #2 : 20.04.2012, 18:08:48 »
Я плохо разбираюсь в коде джума! Удалил К2, установил форму стандартной регистрации и с ней тоже самое! !
*

droozhok

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Re: не работает регистрация
« Ответ #3 : 20.04.2012, 19:51:09 »
Я плохо разбираюсь в коде джума! Удалил К2, установил форму стандартной регистрации и с ней тоже самое! !

k2 использует стандартные классы для авторизации. Так что надо разобраться со стандартом Ж)
То, что я написал, тут тоже подойдёт.
*

ruslanaxti

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: не работает регистрация
« Ответ #4 : 23.04.2012, 10:49:31 »
Стандартная авторизация тоже не работает, там тоже самое  ! как с этим то быть?
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Re: не работает регистрация
« Ответ #5 : 23.04.2012, 10:59:12 »
Присутствует ли в шаблоне
Цитировать
<jdoc:include type="message" />
?

Если нет - вставьте эту запись в шаблон и попробуйте зарегистрироваться - увидите, что вам пишут.
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

ruslanaxti

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: не работает регистрация
« Ответ #6 : 23.04.2012, 17:19:28 »
вставил в таком виде <jdoc:include type="component" /><jdoc:include type="message" />.

Вышло сообщение "Внимание Не удалось вызвать функцию mail.
                           Предупреждение Не удалось зарегистрировать пользователя: Произошла ошибка при отправке письма с регистрационными данными.
                           Администратору сайта было отправлено сообщение о возникшей проблеме.

Что это значит?   
У меня хостинг поддерживает POP3/IMAP/SMTP + WebMail, но почту я не создавал. Может быть надо просто создать почту?
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Re: не работает регистрация
« Ответ #7 : 24.04.2012, 11:25:16 »
Это значит, что хостинг отключил возможность отправки почты.

Вот подобная тема на форуме.
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

lenabo

  • Новичок
  • 3
  • 0 / 0
Re: не работает регистрация
« Ответ #8 : 14.05.2012, 11:14:59 »
Может кому-нибудь поможет: у меня была такая же проблема (перестала работать регистрация на форуме, вернее, не работала CAPTCHA и не давала пройти процедуру регистрации, без CAPTCHA же сайт осаждали боты), дело было в конфликте CAPTCHA в стандартной регистрации и К2 (после обновления до версии 2.5.7). Решение нашлось здесь: http://www.knighton-web.com/index.php/tips-and-tricks/item/9-joomla-and-k2-captcha-conflict.html

The new version of Joomla - 2.5 has a captcha form element built in - which is great.  However, if you install K2 (2.5.6) this also uses the same ReCaptcha element.  Unless you get the settings just right the two will conflict in strange ways.  In order for the system to work you need to

Disable the Captcha -ReCaptcha component in the Joomla Comonent Manager
Go to the User Manager and then to the Options (Users Configuration) and set Captcha to be "none selected"
Go to the K2 configuration and enable Captcha and enter your public and private keys.
If you don't do this, then both captcha's will be used but only one will be displayed (the K2 one I think) and you will get error messages similar to this:

"The words you typed did not match the ones displayed. Please try again."
Or if you disable just the K2 Captcha then you get this error message:
Empty solution not allowed.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не работает мультиязычность для материалов К2

Автор Kokshetau

Ответов: 5
Просмотров: 1137
Последний ответ 21.11.2020, 23:36:12
от Kokshetau
[Решено] Не работает (не отображается) K2 media manager

Автор raidho

Ответов: 1
Просмотров: 1618
Последний ответ 19.07.2019, 22:02:58
от zod3d
Не работает русификация K2 v2.8.0 |

Автор sergspb

Ответов: 5
Просмотров: 8275
Последний ответ 17.05.2019, 21:48:26
от serhy
Не работает функция оценки-рейтинга в статьях в К2

Автор igorsuccess

Ответов: 5
Просмотров: 1193
Последний ответ 02.04.2018, 11:36:40
от igorsuccess
Не работает "оцените материал"

Автор sergspb

Ответов: 3
Просмотров: 1300
Последний ответ 02.11.2017, 11:57:54
от sergspb