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

68pin

  • Осваиваюсь на форуме
  • 28
  • 1 / 0
Всем здравствуйте
есть таблица, есть запрос - всё работает
Вот только результаты запроса, которые выводятся на экран в ужасном виде. Типа
Array([0] => Array ( [date_reg_num] => 16.12.2015 [mail] => admin@mail.ru [pay] => ожидает оплату [promo_cod.......
Как сделать вывод чтобы выводилось в табличном виде. 5 столбцов и строк (переменная)
вот текст запроса:

$db =& JFactory::getDBO();
$query = "SELECT date_reg_num, mail, pay, promo_code, name FROM `pervyj_promo` WHERE promo_code='$pcode'";
$db->setQuery($query);
$datavalue = $db->loadAssocList();
$result = $datavalue;
print_r ($result);
« Последнее редактирование: 17.12.2015, 10:59:23 от b2z »
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Код: php
$db =& JFactory::getDBO();
$query = "SELECT date_reg_num, mail, pay, promo_code, name FROM `pervyj_promo` WHERE promo_code='$pcode'";
$db->setQuery($query);
$rows = $db->loadObjectList();
$html = '
<table>
<thead>
<tr>
<th>date_reg_num</th>
<th>mail</th>
<th>pay</th>
</tr>
</thead>
';
foreach ($rows as $row) {
$html .= '
<tr>
<td>'.$row->date_reg_num.'</td>
<td>'.$row->mail.'</td>
<td>'.$row->pay.'</td>
</tr>
'
}
$html .= '</table>'
echo $html;
« Последнее редактирование: 17.12.2015, 00:31:30 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

68pin

  • Осваиваюсь на форуме
  • 28
  • 1 / 0
Код: php
$db =& JFactory::getDBO();
$query = "SELECT date_reg_num, mail, pay, promo_code, name FROM `pervyj_promo` WHERE promo_code='$pcode'";
$db->setQuery($query);
$rows = $db->loadObjectList();

Выдаёт ошибку 500. Блин Всю голову сломал уже. В чем может быть проблема?
*

68pin

  • Осваиваюсь на форуме
  • 28
  • 1 / 0
Выдаёт ошибку 500. Блин Всю голову сломал уже. В чем может быть проблема?
Проблемы начинаются с этого момента:
foreach ($rows as $row) {
   $html .= '
      <tr>
         <td>'.$row->date_reg_num.'</td>
         <td>'.$row->mail.'</td>
         <td>'.$row->pay.'</td>
      </tr>
   '
}
$html .= '</table>'
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Код: php
if ($rows) {
  foreach ($rows as $row) {
     $html .= '
        <tr>
           <td>'.$row->date_reg_num.'</td>
           <td>'.$row->mail.'</td>
           <td>'.$row->pay.'</td>
        </tr>
     ';
  }
} else {
   $html .= '
      <tr>
         <td colspan="3">No data</td>
      </tr>
   ';
}
*

68pin

  • Осваиваюсь на форуме
  • 28
  • 1 / 0
Решил проблему вот так

$db =& JFactory::getDBO();
$query = "SELECT date_reg_num, reg_num, sum, pay, name, promo_code FROM `pervyj_promo` WHERE promo_code='$pcode'";
$db->setQuery($query);
$rows = $db->loadObjectList();

echo "<table width=95% border=1 align=center cellpadding=5 cellspacing=5>
<thead>
<tr align=center >
<td><b>Дата регистрации</b></td>
<td><b>Рег. номер заявки</b></td>
<td><b>Основная сумма</b></td>
<td><b>Статус</b></td>
<td><b>Имя сотрудника</b></td>
<td><b>Код</b></td>
</tr>
</thead> ";


foreach ($rows as $row){
echo "<tr>";

foreach ($row as $sValue){
echo "<td align=center>{$sValue}</td>";

}
echo "</tr>";
}
echo "</table>";

Всё работает и красиво.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
по последнему коду какой то бред, зачем два раза делать перебор строк по количеству ячеек в строке, честно - бредокод
запрос отдает 5 значений, приведенный мной и AlekVolsk примеры совершенно корректно отрабатывают
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

К текущему дню недели добавить класс

Автор Gover

Ответов: 5
Просмотров: 1151
Последний ответ 04.09.2016, 23:23:41
от effrit
PageSpeed Insights находит на сайте непонятные страницы

Автор daddy

Ответов: 2
Просмотров: 2944
Последний ответ 14.12.2015, 18:44:47
от AlekVolsk
Не верно отображаеться редирект - ?

Автор warlocksp

Ответов: 0
Просмотров: 1043
Последний ответ 21.07.2015, 16:37:36
от warlocksp
Как прописать JavaScript позицию вывода ?

Автор warlocksp

Ответов: 3
Просмотров: 1362
Последний ответ 04.05.2015, 14:38:43
от warlocksp
Как опустить кнопку вниз ?

Автор warlocksp

Ответов: 0
Просмотров: 1218
Последний ответ 02.04.2015, 13:35:58
от warlocksp