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

tagilnext

  • Захожу иногда
  • 71
  • 2 / 0
Создал форму, все ясно все легко, но вот проблема:

Если на поле поставить проверку "альфа(только буквы)" то появляется сообщение на руские символы, что в этом поле можно использовать только буквы!

Где поправить?

Решено:
файл /components/com_formcalc/assets/js/formcheck.js
регулярное выражение надо поправить

« Последнее редактирование: 11.12.2013, 12:39:48 от tagilnext »
*

tagilnext

  • Захожу иногда
  • 71
  • 2 / 0
С отправкой письма бред какой то!

В форме есть поле {mailto} (обязательное)
В админке в Шаблоне email сообщения указан мой email.


Что получается:

Пользователь заполнил форму, отправил.

Ему приходит письмо.
А потом приходят еще два письма в поле кому указан как мой email так и пользователя.

Итог: я получаю 2 письма, а пользователь  аж 3!

Ужас.
*

aleotta

  • Новичок
  • 7
  • 0 / 0
При вводе нецелых чисел считаются только те, которые прописаны через точку (3.12). А если число прописано через запятую, считается только целое число. Подскажите, пожалуйста, как быть? Может кто сталкивался?
*

Pazys

  • Завсегдатай
  • 1738
  • 241 / 4
  • <a>А где я ошибся-то?</b>
При вводе нецелых чисел считаются только те, которые прописаны через точку (3.12). А если число прописано через запятую, считается только целое число. Подскажите, пожалуйста, как быть? Может кто сталкивался?

Вот тут отвечал http://joomlaforum.ru/index.php/topic,281256.msg1398506.html#msg1398506 ... не копался в нем, но думаю можно сделать маску на дробные числа
Ишак меня нюхал ...
Если помог - плюсуйте в карму.
*

radist_z

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Уважаемые гуру. Подскажите как сделать так чтобы вместе с результатами расчета калькулятора, приходили еще и поля с пуктами из этого калькулятора которые выбрали и не приходили пункты которые не выбирали.
*

aleotta

  • Новичок
  • 7
  • 0 / 0
Вот тут отвечал http://joomlaforum.ru/index.php/topic,281256.msg1398506.html#msg1398506 ... не копался в нем, но думаю можно сделать маску на дробные числа


Маску удалось сделать. Но 1) там ведь нужно точно знать шаблон вводимого числа. а не всегда известно из скольких цифр будет состоять целая часть числа и из скольких дробная (999.999); 2) после ввода первого числа по шаблону, форма калькулятора пересчитывает все строки. а так как остальные поля по маске не заполнены. результат всех ячеек "NaN", пока не заполняться все маски.

Можно ли где-то поправить код калькулятора, чтобы все-таки форма учитывала и запятые при вводе дробного числа?
« Последнее редактирование: 15.12.2013, 19:48:18 от aleotta »
*

Kitsunebi

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
Здравствуйте, скажите, пожалуйста, можно как-то сделать чтоб расчет отображался после нажатия на кнопку (например, "Рассчитать"). Иногда не совсем корректно отображаются данные при их изменении (нужно перейти либо к следующему значению, либо "клацнуть в пустом месте").
И еще бы неплохо сделать кнопку сброса значений. На данный момент, если я выбираю input type="reset" то сбрасываются данные в полях, но остается старый просчитанный результат((

Проверялось на локалхосте (XAMPP 1.8.2), Joomla 2.5.16
*

Agard

  • Захожу иногда
  • 83
  • 0 / 1
Здравствуйте!
Подскажите пожалуйста, насколько правильно это:
Код
defined('_JEXEC') or die('=;)');
Может оно, конечно, и не чревато, но я у себя поправил на привычные:
Код
defined('_JEXEC') or die;
*

Pazys

  • Завсегдатай
  • 1738
  • 241 / 4
  • <a>А где я ошибся-то?</b>
Ну как я вижу - это одно и то-же, просто у вернего кода при попытке прямого доступа в файлу будет нарисован подмигивающий панк (смайлик).

=;)

Например можно написать:
Код: php-brief
defined('_JEXEC') or die('Сюда нельзя');
Ишак меня нюхал ...
Если помог - плюсуйте в карму.
*

Иоланта

  • Захожу иногда
  • 166
  • 3 / 0
а в формуле что нельзя делать умножение на десятичные?
*

Pazys

  • Завсегдатай
  • 1738
  • 241 / 4
  • <a>А где я ошибся-то?</b>
Десятичные пишутся с точкой .... я не пробовал, но вдруг в этом дело.
Еще можно так:
a * 1.82 = a * 182 / 100
Ишак меня нюхал ...
Если помог - плюсуйте в карму.
*

Agard

  • Захожу иногда
  • 83
  • 0 / 1
Ну как я вижу - это одно и то-же, просто у вернего кода при попытке прямого доступа в файлу будет нарисован подмигивающий панк (смайлик).

=;)

Например можно написать:
Код: php-brief
defined('_JEXEC') or die('Сюда нельзя');

Спасибо!
А, как, при жамканьи энтера в форме на сайте (не в админке), не переходить на форму отправки?
Или - как отключить отправку писем?
*

atrixr

  • Новичок
  • 7
  • 0 / 0
Доброго времени!
Подскажите пожалуйста по поводу зависимых полей.
С java только начал .
Сделал форму по примеру на сайте с двумя зависимыми селектами. Не могу понять как прикрутить третий.Что бы он зависел от второго селекта.
То есть при выборе в 1 селекте типа блока питания, выбираем мощность в 2 селекте и получаем в 3 селекте список БП именно той мощности которую выбрали.
Подскажите куда копать? Как правильно функцию прописать что бы 3 селект зависел именно от оптионса в селекте.
Спойлер
[свернуть]
Спойлер
[свернуть]
« Последнее редактирование: 26.12.2013, 18:29:25 от atrixr »
*

Иоланта

  • Захожу иногда
  • 166
  • 3 / 0
у меня спотыкается формула в одном месте...уже 2-ю неделю голову ломаю...

код огромный, но простой в принципе

Спойлер
[свернуть]

а вот формула

Код
rez={l}*{b}*{roof}+{l}*{b}*{floor}+{h}*{b}*{wall}*{wall_s}+{l}*{h}*{orgalit}+{l}/{section}*{b}*{polka}*1380+{l}/{section}*{shtanga}*300+{right}+{left}+{l}/{dsp_p}*{h}*1380+{l}/{mirror_p}*{h}*1380+{l}/{glass_p}*{h}*2200+{l}/{rotang_p}*{h}*4000+{l}/{lako_p}*{h}*2500+{l}/{pesok_p}*{h}*6000+{profil_door}+{no_door}+{box_s}*1500+{box_l}*1700+{cart_450}*2200+{cart_700}*2500+{cart_shoe}*4000+{bru}*2000+{light}*800



в итоге в поле ИТОГО не выводит ничего, даже 0 не показывает. Путем подставления и убирания формул, вычислила, что проблема начинается в

Код
{l}/{dsp_p}*{h}*1380

помогите кто может. за благодарность!
*

Pazys

  • Завсегдатай
  • 1738
  • 241 / 4
  • <a>А где я ошибся-то?</b>
Код
{l}/{dsp_p}*{h}*1380
dsp_p не равно нулю?
Ишак меня нюхал ...
Если помог - плюсуйте в карму.
*

Иоланта

  • Захожу иногда
  • 166
  • 3 / 0
Код
{l}/{dsp_p}*{h}*1380
dsp_p не равно нулю?

Это поле ввода этого значения. То есть человек вводит кол-во дверей из ДСП
*

Pazys

  • Завсегдатай
  • 1738
  • 241 / 4
  • <a>А где я ошибся-то?</b>
А оно не равно нулю?
Ишак меня нюхал ...
Если помог - плюсуйте в карму.
*

Иоланта

  • Захожу иногда
  • 166
  • 3 / 0
так я не могу туда подставлять значения, ведь я не знаю, из какого материала заказчик захочет двери.... даже если сделать выпадающий список и, например для каждого материала сделать селекты от 1 до 4, тогда по умолчанию будет стоять 1...и просуммируются все материалы по 1 двери...правильно я мыслю?
« Последнее редактирование: 05.01.2014, 02:54:44 от Иоланта »
*

Pazys

  • Завсегдатай
  • 1738
  • 241 / 4
  • <a>А где я ошибся-то?</b>
Не совсем. У любого инпута есть значение value - вот оно будет. Уменьшайте вашу формулу до минимума, пока косячит.
Вот например:
{l}/{dsp_p}*{h}*1380
{l}/{dsp_p}*{h}
{l}/{dsp_p}

И пробуйте вместо переменных поставить конкретные значения. Чтобы выявить "виновника торжества".

{l}/{dsp_p}*{10}
{l}/{10}*{h}
{10}/{dsp_p}*{h}

dsp_p - переименуйте в dspp (уберите символ "_")

Ишак меня нюхал ...
Если помог - плюсуйте в карму.
*

Иоланта

  • Захожу иногда
  • 166
  • 3 / 0
Да, Вы правы. формула работает, но...
в расчете представлено 6 материалов для дверей. и 100% заказчику не нужны все виды. может 1 или 2.... как быть? в расчет получается включены все материалы, удалить или вписать 0 не получается, ведь тогда формула не работает....

во вложении-скрин, вот ссылка для наглядности http://slide-doors.ru/calculator
*

Pazys

  • Завсегдатай
  • 1738
  • 241 / 4
  • <a>А где я ошибся-то?</b>
Ну тут уже от формулы зависит.
Ишак меня нюхал ...
Если помог - плюсуйте в карму.
*

Иоланта

  • Захожу иногда
  • 166
  • 3 / 0
Ну тут уже от формулы зависит.

то есть выхода нет, да?
спасибо Вам огромное за помощь!
*

bjiaguk

  • Новичок
  • 2
  • 0 / 0
может кто знает почему у меня вместо русского текста знаки вопроса - ? - где-то кодировку поменять?
Код
<td>?(много знако вопроса вместо кириллицы)?:</td><td><input type="text" name="dalnost" size="5" class="validate['required','digit']"/></td>
« Последнее редактирование: 08.01.2014, 04:33:26 от bjiaguk »
*

Pazys

  • Завсегдатай
  • 1738
  • 241 / 4
  • <a>А где я ошибся-то?</b>
Либо файлы надо пересохранять в UTF-8 либо таблицы БД в UTF8_general_ci
Ишак меня нюхал ...
Если помог - плюсуйте в карму.
*

bjiaguk

  • Новичок
  • 2
  • 0 / 0
спасибо. все вроде уже проверил - и файлы и базы - только эта форма глючит. продолжаю рыть  :o
ииииии-ха! действительно в базе кодировка не та была, а чтобы найти нужно было просто поспать))
« Последнее редактирование: 08.01.2014, 15:05:31 от bjiaguk »
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Прошу подсказать по такому вопросу. Давненько не делал калькуляторы, и вот пришлось.
Калькулятор доступен по ссылке: http://komtag.ru/calc
Грубо говоря, в каждом селекте у каждого пункта прописано своё значение. Формула простая, но что-то не сходится.
Привожу код калькулятора:
Код
<script type="text/javascript">
function calcCost() {
           var obem = document.getElementById("obem").value;
           var tolschina = document.getElementById("tolschina").value;
           var krishka = document.getElementById("krishka").value;
           var koleso = document.getElementById("koleso").value;
           var kolvo = document.getElementById("kolvo").value;
           var itog = (obem + tolschina + krishka + koleso)*kolvo;
}

</script>

<table width="100%">
<tr><td align="center">
<img src="../images/calc/Prosto_konteyner_ris_1.png" width="125" height="150"><br />
<span style="font-weight: bold; font-size: 20px;">Объём</span> <br />
<select name="obem" id="obem" class="calc">
<option value="10">0.5</option>
<option value="10">0.63</option>
<option value="10">0.75</option>
<option value="10">0.8</option>
</select>
</td><td align="center">
<img src="../images/calc/Tolschina_stenki_ris_2.png" width="125" height="150"><br />
<span style="font-weight: bold; font-size: 20px;">Толщина</span><br />
<select name="tolschina" id="tolschina" class="calc">
<option value="10">1.5</option>
<option value="10">2</option>
<option value="10">3</option>
</select>
</td><td align="center">
<img src="../images/calc/Kryshka_ris_3.png" width="188" height="150"><br />
<span style="font-weight: bold; font-size: 20px;">Крышка</span> <br />
<select name="krishka" id="krishka" class="calc">
<option value="10">Нет</option>
<option value="10">1.5 мм.</option>
<option value="10">2 мм.</option>
</select>
</td><td align="center">
<img src="../images/calc/S_kolesami_ris_4.png" width="125" height="150"><br />
<span style="font-weight: bold; font-size: 20px;">Колёса</span> <br />
<select name="koleso" id="koleso" class="calc">
<option value="10">Нет</option>
<option value="10">100 мм.</option>
<option value="10">125 мм.</option>
<option value="10">160 мм.</option>
</select>
</td><td align="center">
<img src="../images/calc/Kolichestvo_ris_5.png" width="188" height="150"><br />
<span style="font-weight: bold; font-size: 20px;">Количество</span> <br />
<select name="kolvo" id="kolvo" class="calc">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</td></tr>
</table>
<br /><br /><br />
<h3>Рассчитать стоимость</h3>
<div id="res" style="display: none;">Стоимость: <strong>{itog}руб.</strong></div>
<input type="button" onclick="calcCost()" value="Рассчитать" /><br />

Формула:
Код
itog=(obem+tolschina+krishka+koleso)*kolvo

Подскажите пожалуйста, в чём ошибка? Может я неверно в целом функцию организовал?
*

Kitsunebi

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
Спойлер
[свернуть]

У тебя вроде ошибка в формуле - пропустил фигурные скобки вокруг переменных (см. инструкцию на офсайте). Должно быть так:
Код
itog=({obem}+{tolschina}+{krishka}+{koleso})*{kolvo}
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
У тебя вроде ошибка в формуле - пропустил фигурные скобки вокруг переменных (см. инструкцию на офсайте). Должно быть так:
Код
itog=({obem}+{tolschina}+{krishka}+{koleso})*{kolvo}

Спасибо, поправил, вроде начало считать. Но 2 параметра не считает всё равно. Там где Крышка и Колёса

UPD

Были неправильные значения в селектах, вот и неверно считало. Всё поправил, всё работает
« Последнее редактирование: 08.01.2014, 22:44:55 от zeus07 »
*

Kitsunebi

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
Спасибо, поправил, вроде начало считать. Но 2 параметра не считает всё равно. Там где Крышка и Колёса

UPD

Были неправильные значения в селектах, вот и неверно считало. Всё поправил, всё работает
Попробуй убрать оттуда мм., т.е. оставить только цифры
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Попробуй убрать оттуда мм., т.е. оставить только цифры

там всё верно, в значениях только цифры
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Компонент Web Plan интерактивная карта для Joomla 1.5 (построение сайтов плановых объектов)

Автор DelaShop

Ответов: 39
Просмотров: 32426
Последний ответ 21.01.2018, 14:50:57
от Dinamitt
Калькулятор форм - продолжение

Автор osobist

Ответов: 2
Просмотров: 5293
Последний ответ 25.01.2015, 18:00:18
от dj_serg
Отрывной календарь Joomla, календарь событий.

Автор DelaShop

Ответов: 35
Просмотров: 32562
Последний ответ 17.12.2014, 06:20:05
от EndVal
Компонент " Просто каталог Joomla + Mixmarket Joomla "

Автор DelaShop

Ответов: 16
Просмотров: 18447
Последний ответ 10.07.2013, 11:06:13
от konservator