Новости Joomla

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+)

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+)

При отображении форм компонента в админке раньше разработчикам нужно было описывать скрытые поля в лейаутах. И выглядело это так:

<?php // Это файл в /layouts/components/com_component/your_layout.php ?> <input type="hidden" name="task" value=""> <input type="hidden" name="return" value="<?php echo $input->getBase64('return'); ?>"> <input type="hidden" name="forcedLanguage" value="<?php echo $input->get('forcedLanguage', '', 'cmd'); ?>"> <?php echo HTMLHelper::_('form.token'); ?>

Начиная с Joomla 5.3 добавлен новый способ добавления таких полей (их называют control fields) - программно. И теперь это можно сделать просто в Controller / View.

<?php // В Controller/View добавляем поля $this->form ->addControlField('task', '') ->addControlField('return', $input->getBase64('return', '')) ->addControlField('forcedLanguage', $forcedLanguage);

А в layout'е просто используем метод

renderControlFields()

<?php // В layout формы echo $this->form->renderControlFields();

Многие компоненты ядра уже используют этот подход. Соответствующий PR был принят в Joomla 5.3 осенью 2024г.

Смотреть Pull Request

0 Пользователей и 1 Гость просматривают эту тему.
  • 2 Ответов
  • 1801 Просмотров
*

master-smeta

  • Захожу иногда
  • 298
  • 10 / 0
Здравствуйте. Подскажите пожалуйста ответ на такой вопрос: Можно ли в своем модуле использовать языковые константы от других модулей и компонентов, или для каждого модуля нужно использовать свой файл локализации?
Например у меня в модуле должна выводиться "Дата создания". Такая константа уже есть: COM_CONTENT_CREATED_DATE, однако использовать ее в моем модуле у меня не получается. Если я напишу:
Код
echo JText::_( 'COM_CONTENT_CREATED_DATE' );
то получу не значение константы (Дата создания), а саму константу (COM_CONTENT_CREATED_DATE).
Если же я создам отдельный файл локализации типа ru-RU.my_mod.ini с такой константой, а коде напишу:
Код
echo JText::_( 'MY_MOD_CREATED_DATE' );
То все выводится нормально.
Но я не хочу создавать лишние файлы, тем более что всё уже создано
« Последнее редактирование: 10.12.2014, 17:28:18 от b2z »
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Можно, но я бы не советовал. А если COM_CONTENT_CREATED_DATE вдруг изменят?

Если не аргумент, то:
Код: php
$lang = JFactory::getLanguage();
$extension = 'com_content';
$base_dir = JPATH_SITE;
$language_tag = 'ru-RU';
$reload = true;
$lang->load($extension, $base_dir, $language_tag, $reload);

Можно проще:
Код: php
$lang->load('com_content');
*

master-smeta

  • Захожу иногда
  • 298
  • 10 / 0
Понятно. Спасибо. Тему можно закрывать
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

URL языковых версий сайта

Автор drVadz

Ответов: 2
Просмотров: 5115
Последний ответ 25.08.2019, 14:22:05
от drVadz
[РЕШЕНО]Нестандартный переключатель языков Joomla 3.9.4

Автор Шмайсер

Ответов: 1
Просмотров: 2121
Последний ответ 30.03.2019, 13:00:12
от Шмайсер
[РЕШЕНО] Использование локализации для деления информации по городам

Автор effrit

Ответов: 6
Просмотров: 1767
Последний ответ 22.03.2019, 10:17:43
от sivers
Как добавить язык если его нет в стандартных?

Автор Dolphin4ik_1

Ответов: 0
Просмотров: 1317
Последний ответ 29.01.2019, 23:14:21
от Dolphin4ik_1
Один файл переопределения языковых констант языка и для сайта и для админки

Автор Mega-e

Ответов: 1
Просмотров: 3387
Последний ответ 12.11.2018, 11:08:14
от Mega-e