Совет по Joomla: показ уведомлений Joomla.renderMessages.
Пользователь совершает какие-то действия на сайте и получает сообщения об успешном или не успешном их результате, а также просто информационные сообщения. В php коде мы привыкли использовать для этого метод enqueueMessage():
use Joomla\CMS\Factory; $html = 'Message'; Factory::getApplication()->enqueueMessage($html, 'warning');
Чаще всего в качестве сообщения используются языковые константы, чтобы пользователи могли получать сообщения на своём языке:
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().
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.
