Я создаю пользовательский компонент, который позволяет внутреннему пользователю связывать категорию контента с записью в моей таблице базы данных. Я хотел бы иметь то же поле формы, которое отображается во всем бэкэнде в Joomla, где пользователь может фильтровать / искать категории в выпадающем списке, печатая.
Веб-сайт Joomla предоставляет этот пример кода:
<field name="mycategory" type="category" extension="com_content" label="Select a category" description="" />
Однако при этом создается только стандартное раскрывающееся поле выбора, которое невозможно найти.
Глядя в ‘administrator / components / com_content / models / forms / artile.xml’, поле категории выглядит так:
<field name="catid"type="categoryedit"label="JCATEGORY"description="JFIELD_CATEGORY_DESC"required="true"default="">
</field>
Однако это дает мне простое текстовое поле для ввода идентификатора категории.
Как я могу легко получить выпадающий поиск без программирования с нуля?
Тип поля категории является стандартным типом поля формы, поэтому он доступен вам везде, где вы создаете форму в Joomla. Вы можете прочитать больше о стандартных полях формы на https://docs.joomla.org/Standard_form_field_types. Однако тип поля categoryedit является чем-то уникальным / нестандартным для компонента менеджера категорий. Вы можете прочитать больше о пользовательских полях формы на https://docs.joomla.org/Creating_a_custom_form_field_type.
Чтобы использовать настраиваемые поля в xml, вы должны объявить путь к месту хранения полей, используя атрибут addfieldpath в теге fieldset вашего xml-файла.
пример
<fieldset addfieldpath="/administrator/components/<component name>/models/fields"></fieldset>
[/ NOEDIT]
В приведенном выше примере будет com_categories, поэтому полный путь для использования categoryedit будет
<fieldset addfieldpath="administrator/components/com_categories/models/fields"></fieldset>
[/ NOEDIT]
Добавление этой строки в шаблон включает функцию автозаполнения.
JHtml::_('formbehavior.chosen', 'select', null, array('disable_search_threshold' => 0 ));