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

avariya007

  • Новичок
  • 6
  • 0 / 0
Re: Модуль оплаты Liqpay
« Ответ #30 : 07.12.2012, 03:00:45 »
Вот версия под Joomla 1.6, 1.7 и 2.5. Она идентична по фунционалу с версией под 1.5.
а подходит компонент для VirtueMart? ато компонент установился но при попыткев него зайти в ответ только
Attention! Make sure the following directory is writeable to receive updates on payments' status from payment gateway:
Array. и ничего нигде не отрегулировать
*

gray

  • Захожу иногда
  • 58
  • 1 / 0
Re: Модуль оплаты Liqpay
« Ответ #31 : 06.02.2013, 20:53:36 »
а подходит компонент для VirtueMart? ато компонент установился но при попыткев него зайти в ответ только
Attention! Make sure the following directory is writeable to receive updates on payments' status from payment gateway:
Array. и ничего нигде не отрегулировать
На какую версию Joomla ставили?
Где такая ошибка выдается (адрес страницы)?
*

serge2

  • Новичок
  • 3
  • 0 / 0
Re: Модуль оплаты Liqpay
« Ответ #32 : 09.11.2018, 13:54:18 »
Подскажите, а как правильно изменить этот код, чтобы можно было HTML формой вносить переменные <order_id>ORDER_1234</order_id>[/size]<amount>10</amount>[/size][/font]


====== file.php ========
<?
$merchant_id='i8349114177';
$signature="XFXBKtVRGNKlyappjJUylZGjHFwDQ2zBCK2VH3J";
$url="https://liqpay.com/?do=clickNbuy";
$method='card';
$phone='+20123145121';

$xml="<request>     
<version>1.2</version>
<result_url>http://mysite.com/lqanswer.php</result_url>
<server_url>http://mysite.com/lqanswer.php</server_url>
<merchant_id>$merchant_id</merchant_id>
<order_id>ORDER_1234</order_id>
<amount>10</amount>
<currency>USD</currency>
<description>Description</description>
<default_phone>$phone</default_phone>
<pay_way>$method</pay_way>
</request>
";


$xml_encoded = base64_encode($xml);
$lqsignature = base64_encode(sha1($signature.$xml.$signature,1));



echo("<form action='$url' method='POST'>
      <input type='hidden' name='operation_xml' value='$xml_encoded' />
      <input type='hidden' name='signature' value='$lqsignature' />
<input type='submit' value='Pay'/>
</form>");
?>
*

serge2

  • Новичок
  • 3
  • 0 / 0
Re: Модуль оплаты Liqpay
« Ответ #33 : 13.11.2018, 12:51:02 »
Граждане, ни у кого нету случайно модуля Liqpay? Находил одного товарища, который их продает за 30 баксов. Если ни у кого нету (или не хочет поделиться) может быть, нуждающиеся, скинемся?

Доработал скрипт оплаты Liqpay (Ликпей) на произвольную сумму, где пользователь вводит примечание (логин) и произвольную сумму платежа. Кому нужен, обращайтесь в личку или сюда.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль доставки "Почтой России"

Автор alibedog

Ответов: 104
Просмотров: 57470
Последний ответ 13.07.2021, 17:36:09
от SolopoV
Модуль доставки Укрпочта

Автор al_13

Ответов: 13
Просмотров: 8132
Последний ответ 13.05.2021, 12:57:59
от nnnata
Модуль доставки - самовывоз. Как сделать?

Автор demonm

Ответов: 18
Просмотров: 9624
Последний ответ 29.04.2017, 17:31:56
от princeyury
Модуль доставки почты России 1.0.6 для VirtueMart 1.1.Х

Автор esmark

Ответов: 65
Просмотров: 26635
Последний ответ 24.12.2015, 11:29:51
от SolopoV
[Решено] Конвертация валюты в настройках модуля оплаты PayPal (Legacy)

Автор sincro-fazatron

Ответов: 4
Просмотров: 5318
Последний ответ 12.12.2015, 13:09:38
от Sheff14