预定义列表表单字段
**预定义列表**表单字段类型提供了一个预定义条目的下拉列表。如果该字段具有保存的值,则在页面首次加载时会选择该值。如果没有,则会选择默认值(如果有)。
在很大程度上,配置选项与列表字段相同,但是该字段的值由预定义选项类变量创建。因此,以下变量与列表字段具有相同的含义。
- **type**(必填)必须为predefinedlist。
- **name**(必填)是该字段的唯一名称。
- **label**(必填)(可翻译)是该字段的 HTML 标签。
- **description**(可选)(可翻译)是字段描述。
- **default**(可选)(不可翻译)是默认的列表项值。
- **class**(可选)是 HTML 表单字段的 CSS 类名。如果省略,则将默认为“inputbox”。
- **multiple**(可选)是否可以同时选择多个项目(true 或 false)。
- **required**(可选)如果设置为 true,则第一个字段选项应为空,请参见最后一个示例。
- **useglobal**(可选)如果设置为 true,它将显示在全局配置中设置的值(如果在数据库中找到)。
由以下实现:libraries/src/Form/Field/PredefinedlistField.php
XML 参数定义示例
<field
name="mylistvalue"
type="Myextension.Mycustompredefinedlist"
default=""
label="Select an option"
description="">
</field>
这将伴随着您在 PHP 中定义的字段,它看起来像
class MyextensionFormFieldMycustompredefinedlist extends JFormFieldPredefinedList
{
public $type = 'Mycustompredefinedlist';
protected $predefinedOptions = array(
'1' => 'COM_FOO_LABEL_FOR_TRANSLATION',
'0' => 'COM_FOO_ANOTHER_LABEL_FOR_TRANSLATION',
);
}
此外,您可以在 PHP 中将 translate
类变量设置为 false,这将导致您的预定义选项的值在显示给用户之前不会通过 Text
进行翻译。