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

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Закрыть модальное окно ?
« : 12.03.2016, 20:05:45 »
Добрый день,

Подскажите как сдлеать, что б после отправки модальное окно закрывалось?

Вывод модального окна делаю с помощью строки:
Код
<a rel="shadowbox" href="index.php?option=com_breezingforms&ff_name=OrderForm&tmpl=component" class="jcepopup"><button><?php echo JText::_('ЗАКАЗАТЬ')?></button></a>

Не селен, что нужно дописать с скрипте кнопки "Submit"
Код
function ff_validate_submit(element, action)
{
    if(typeof bfUseErrorAlerts != 'undefined'){
     JQuery(".bfErrorMessage").html('');
     JQuery(".bfErrorMessage").css("display","none");
    }
    error = ff_validation(0);
    if (error != '') {

        if(typeof bfUseErrorAlerts == 'undefined'){
           alert(error);
        } else {
           bfShowErrors(error);
        }
        ff_validationFocus();
    } else
        ff_submitForm();
} // ff_validate_submit

Этот вопрос поднимался в теме: http://joomlaforum.ru/index.php/topic,309493.new.html#new - но не работает то решение...

Помогите, сделать что б после отправки форму окно закрывалось ?
« Последнее редактирование: 12.03.2016, 20:14:09 от warlocksp »
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

Yurets

  • Захожу иногда
  • 405
  • 92 / 0
  • Губернатор острова Борнео
Re: Закрыть модальное окно ?
« Ответ #1 : 13.03.2016, 10:14:50 »
У вашего модального окна есть id или отдельный class? Если да, то его можно попробовать спрятать с помощью того же jQuery

Код
} else {
        ff_submitForm();
        JQuery("#my_modal_id").css("display","none");
}
} // ff_validate_submit
В комнате с белым потолком
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Re: Закрыть модальное окно ?
« Ответ #2 : 13.03.2016, 13:47:31 »
У вашего модального окна есть id или отдельный class? Если да, то его можно попробовать спрятать с помощью того же jQuery

Код
} else {
        ff_submitForm();
        JQuery("#my_modal_id").css("display","none");
}
} // ff_validate_submit

Не работает - этот вариант...
Ничего не поменялось, окно не закрывается и не исчезает...
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

Yurets

  • Захожу иногда
  • 405
  • 92 / 0
  • Губернатор острова Борнео
Re: Закрыть модальное окно ?
« Ответ #3 : 13.03.2016, 14:12:39 »
Покажите весь код (функцию ff_validate_submit) и код модального окна.
В комнате с белым потолком
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Re: Закрыть модальное окно ?
« Ответ #4 : 13.03.2016, 14:15:55 »
Покажите весь код (функцию ff_validate_submit) и код модального окна.

Код функции: ff_validate_submit
Код
function ff_validate_submit(element, action)
{
    if(typeof bfUseErrorAlerts != 'undefined'){
     JQuery(".bfErrorMessage").html('');
     JQuery(".bfErrorMessage").css("display","none");
    }
    error = ff_validation(0);
    if (error != '') {

        if(typeof bfUseErrorAlerts == 'undefined'){
           alert(error);
        } else {
           bfShowErrors(error);
        }
        ff_validationFocus();
    } else
        ff_submitForm();
} // ff_validate_submit

Ссылка по которой вызываю модальное окно:
Код
<a rel="shadowbox" href="index.php?option=com_breezingforms&ff_name=OrderForm&tmpl=component" class="jcepopup" ><button><?php echo JText::_('ЗАКАЗАТЬ')?></button></a>
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как вывести BreezingForms в модальное окно ? [Решено]

Автор Magl

Ответов: 2
Просмотров: 4329
Последний ответ 20.01.2015, 17:33:27
от igr.skr
Пустое окно просмотра

Автор user

Ответов: 5
Просмотров: 2346
Последний ответ 11.12.2012, 18:22:02
от user
можно ли сделать окно даты?

Автор nick71

Ответов: 1
Просмотров: 2169
Последний ответ 11.12.2010, 09:04:43
от shmakatuha