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

Liss

  • Захожу иногда
  • 238
  • 10 / 0
Стандартный select с возможностью выбора нескольких вариантов предлагает делать этот выбор с зажатым ctrl или shift.
Сделаем его дружелюбным. Вот таким


качаем jQuery библиотеку https://harvesthq.github.io/chosen/
из всего архива нужно только два файла:
chosen.jquery.js - кладем в /media/com_rsform/js/
chosen.css - кладем в /media/com_rsform/css/

в файле /administrator/components/com_rsform/helpers/fields/selectlist.php
в районе 157 строки перед
Код
return $html;

подключаем библиотеку
Код: php-brief
RSFormProAssets::addScript(JHtml::script('com_rsform/chosen.jquery.js', false, true, true));
RSFormProAssets::addStyleSheet(JHtml::stylesheet('com_rsform/chosen.css', array(), true, true));

Можете подключать в глобальном шаблоне, только код подключения будет выглядеть по-другому (правда я не вижу смысла "таскать" за собой по всему сайту все библиотеки, когда они нужны только на определенных страницах, это снижает скорость загрузки, но речь сейчас не об этом)

В админке компонента в доп. атрибутах поля заносим класс class="chosen-select". В свойствах всей формы, в поле пользовательского javascript кода пишем
Код: javascript
<script>
jQuery(document).ready(function($) {
   $(".chosen-select").chosen();
});
</script>

PS как любая библиотека jquery, эта имеет ряд доп.настроек, которые можно осуществить или доп. атрибутами, или в коде яваскрипта. Смотрите примеры на сайте разработчика
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Мультизагрузка файлов [решение]

Автор Liss

Ответов: 5
Просмотров: 2408
Последний ответ 25.09.2019, 17:06:31
от hmr
Вывод списка в зависимости от поле select ?

Автор warlocksp

Ответов: 8
Просмотров: 2507
Последний ответ 26.10.2017, 04:50:32
от warlocksp
Применение SELECT

Автор b_alex2003

Ответов: 1
Просмотров: 1374
Последний ответ 25.12.2015, 22:19:38
от Agard