Пользователь совершает какие-то действия на сайте и получает сообщения об успешном или не успешном их результате, а также просто информационные сообщения. В php коде мы привыкли использовать для этого метод enqueueMessage().

<?php
use Joomla\CMS\Factory;

$html = 'Message';
Factory::getApplication()->enqueueMessage($html, 'warning');

Чаще всего в качестве сообщения используются языковые константы, чтобы пользователи могли получать сообщения на своём языке:

<?php
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;

Factory::getApplication()->enqueueMessage(Text::_('SOME_LANG_CONSTANT'), 'info');

Рендер сообщений Joomla во фронтенде

Здесь нам потребуется файл подключённые файлы ядра core.js и messages.js. Немного выдержки из кода:

/**
 * Рендер сообщений, отправленных через  JSON
 * Используется некоторыми javascript, в частности validate.js
 *
 * @param   {object}  messages JavaScript объект, содержащий сообщения для рендера.
 * Пример:
 *    const messages = {
 *        "message": ["Это будет зелёное сообщение", "И это тоже"],
 *        "error": ["Это будет красное сообщение", "И это тоже"],
 *        "info": ["Это будет синее сообщение", "И это тоже"],
 *        "notice": ["Какое-то информационное сообщение", "И это тоже"],
 *        "warning": ["Оранжевое сообщение", "И это тоже"],
 *        "my_custom_type": ["Такое же как инфо-сообщение", "И это тоже"]
 *    };
 * @param  {string} selector CSS-селектор контейнера для рендера сообщений
 * @param  {bool}   keepOld  Удалить предыдущие сообщения? Да, если true
 * @param  {int}    timeout  Таймаут исчезновения сообщения в миллисекундах
 * @return  void  Метод ничего не возвращает
 */

Вот как это выглядит на практике:

Joomla.renderMessages({
    message: [Joomla.Text._('COM_SWJPROJECTS_USER_KEYS_KEY_SUCCESSFULLY_COPYED')]
});

Теперь мы видим, что в качестве сообщения мы и в Javascript можем использовать языковые константы. И это круто! Для этого мы используем метод Joomla.Text._() (по аналогии с Text::_() в PHP). Но Javascript откуда-то должен получить значения этих языковых констант. И для этого в php коде нашей страницы мы должны позаботиться о нём и добавить нужные для js языковые константы с помощью метода Text::script().

<?php
use Joomla\CMS\Language\Text;

Text::script('SOME_LANG_CONSTANT_SUCCESS');
Text::script('SOME_LANG_CONSTANT_FAIL');

Таким образом я смогу получить в js доступ к значениям языковых констант SOME_LANG_CONSTANT_SUCCESS и SOME_LANG_CONSTANT_FAIL.

Толкачев Сергей Юрьевич
Толкачев Сергей Юрьевич

Joomla-разработчик. Контрибьютер ядра Joomla. Один из ведущих Telegram-канала русскоязычного Joomla-сообщества JoomlaFeed, один из модераторов чата русскоязычного Joomla-сообщества. Мои расширения в официальном маркетплейсе расширений Joomla - Joomla Extensions Directory. Имею публикации в официальном журнале международного Joomla-сообщества - Joomla Community Magazine.

Муж. Отец 3 детей.

Россия, Саратов.

Расширения Joomla WebTolk

91 Всего расширений
11 Категорий
424 Выпущено версий
422663 Всего скачиваний
Корзина
Корзина пуста