👩💻 Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list.При работе над плагином возникла необходимость указать стандартный набор из нескольких элементов стандартного поля списка. И хотелось указать их в стандартном же атрибуте
default
для полей.
❓ Когда это нужно?Когда Ваши пользователи устанавливают плагин и НЕ заходят в настройки - в коде вы можете использовать значения по умолчанию с помощью класса
Registry
(
писал об этом ранее) и всегда быть уверенным, что хоть какие-то жизненно необходимые параметры к вам придут всегда. 🧐
Но как сделать то же самое для интерфейса админки?Пользователя нужно направлять, предлагать очевидный работоспособный сценарий для начала, а дальше он уже сам разберется. Когда человек заходит в параметры свежеустановленного плагина в
Form
ещё нет данных и параметры по умолчанию выставляются из атрибутов
default
в xml-полях.
<field name="showdesc" type="radio" label="PLG_CFI_PARAM_SHOWDESC" class="btn-group btn-group-yesno" default="1"> <option value="0">JNO</option> <option value="1">JYES</option> </field>
Здесь по умолчанию будет включено "Да". И если пользователь не переключит параметр, то при сохранении мы ожидаемо получим "да" в
params
плагина.Для поля списков
type="list"
можно указать значение по умолчанию и многие знают, что его можно указать только одно.
<field type="list" name="article_fields" label="article_fields" description="article_fields_desc" layout="joomla.form.field.list-fancy-select" multiple="true" default="id" > <option value="id">id</option> <option value="title">title</option> <option value="alias">alias</option> <option value="introtext">introtext</option> <option value="fulltext">fulltext</option> <option value="state">state</option></field>
Но у нас поле с множественным выбором (атрибут
multiple
) и хотелось бы указать несколько значений по умолчанию...Оказывается, так можно сделать. Для этого в атрибуте
default
нужно указать json с нужными параметрами в виде
{int}key : {string} value
.
Например, default='{"0":"id","1":"title"}'.<field type="list" name="article_fields" label="article_fields" description="article_fields_desc" layout="joomla.form.field.list-fancy-select" multiple="true" default='{"0":"id","1":"title"}' > <option value="id">id</option> <option value="title">title</option> <option value="alias">alias</option> <option value="introtext">introtext</option> <option value="fulltext">fulltext</option> <option value="state">state</option></field>
⚠️ Обратите внимание на кавычки! Поскольку
json_decode
не понимает одинарные кавычки собственно
json
нужно писать с двойными, а значение для атрибута
default
писать в одинарные.🙏 За подсказанное решение огромное спасибо участникам нашего сообщества - разработчикам Дмитрию Васюкову (
@fictionlabs) и Игорю Бердичевскому (
@septdir).
@joomlafeed#joomla #разработка #webdev #development