Joomla组件开发:可搜索的类别表单字段


Joomla Component Development: Searchable category form field

我正在创建一个自定义组件,它允许后端用户将内容类别与数据库表中的记录关联起来。我想有相同的表单字段,显示在整个后端在Joomla,其中用户能够通过输入过滤/搜索下拉列表中的类别。

例子

joomla网站提供了这个代码示例:

<field name="mycategory" type="category" extension="com_content" label="Select a category" description="" />

然而,这只创建了一个标准的下拉选择框,它是不可搜索的。

查看'administrator/components/com_content/models/forms/article .xml',分类字段被列出为:

    <field name="catid"
           type="categoryedit"
        label="JCATEGORY"
           description="JFIELD_CATEGORY_DESC"
        required="true"
           default=""
    >
    </field>

然而,这给了我一个简单的文本框来输入类别ID。

我怎样才能轻松地获得可搜索的下拉菜单,而无需从头开始编程?

类别字段类型是一个标准的表单字段类型,所以你可以在任何地方创建一个表单在joomla。您可以在https://docs.joomla.org/Standard_form_field_types上阅读更多关于标准表单字段的信息。但是,categoryedit字段类型对于类别管理器组件来说是唯一的/自定义的。您可以在https://docs.joomla.org/Creating_a_custom_form_field_type上阅读更多关于自定义表单字段的信息。

为了在xml中使用自定义字段,您必须在xml文件的fieldset标签中使用addfieldpath属性声明字段存储的路径。

的例子

<fieldset addfieldpath="/administrator/components/<component name>/models/fields"></fieldset>

在上面的示例中,将是com_categories,因此使用categoryedit的完整路径将是

<fieldset addfieldpath="administrator/components/com_categories/models/fields"></fieldset>

将这行添加到模板中可以启用自动完成功能。

JHtml::_('formbehavior.chosen', 'select', null, array('disable_search_threshold' => 0 ));