标准表单字段属性
标准表单的许多属性直接映射到 HTML 字段属性,不需要进一步解释。 以下描述与含义可能不太明确的属性有关。
您可以查看可用的一般属性列表,方法是查看 libraries/src/Form/FormField.php 中的 __set
函数。 由于许多属性可以在各种 Joomla 标准表单字段中使用,因此在表单字段详细说明中通常不会明确引用它们。
这些属性包括例如
- onchange - 您可以传递一个 JavaScript 函数,该函数在输入元素发生更改时应该获得控制权
- autofocus - 指定页面加载时应该获得焦点的输入元素
- data-xxx - 要在输入元素上设置的数据属性
class
这映射到字段的 HTML 类属性。 除了 CSS 的正常使用之外,它还用于定义要应用的 客户端验证。
description
在 Joomla 4 之前,它映射到工具提示。 从 Joomla 4 开始,它将作为单独的文本显示在字段下方。
在管理员后端,描述的可见性/隐藏性由“切换内联帮助”按钮控制。 您可以通过以下操作在您自己的组件的表单中实现此功能
- 将“切换内联帮助”按钮添加到您的工具栏
$toolbar = Toolbar::getInstance();
...
$toolbar->inlinehelp();
- 将配置添加到您的表单 XML 文件
<form>
<config>
<inlinehelp button="show"/>
</config>
...
</form>
filter
这定义了对用户输入的字段数据应用的过滤器。 对来自互联网的数据进行过滤以防止注入攻击非常重要。
默认情况下,来自文本相关字段的数据使用 libraries/vendor/joomla/filter/src/InputFilter.php 中的 \Joomla\Filter\InputFilter 类进行过滤,该类会删除某些 HTML 标签和属性。 这些标签和属性是硬编码的,不能通过全局配置/文本过滤器进行配置。
Joomla 提供的替代过滤器位于 libraries/src/Form/Filter 中,并在下面描述。 如果您指定要使用的过滤器,则不会应用默认过滤器。 请注意,这些过滤器不同于应用于 URL 参数的过滤器(在 输入过滤器 中描述)。
intarray - 使用 PHP intval 过滤文本。 其他文本字符将被丢弃。(传递的数据项可以是字符串,不必是数组)。
raw - 不应用任何过滤器。
rules - 用于过滤类型为“rules”的字段的专用过滤器,用于输入权限
safehtml - 与默认过滤器基本相同,它会删除某些 HTML 标签和属性。 您可以轻松自定义此过滤器,以包含您希望阻止的其他 HTML 标签。
tel - 应用基于各种电话号码方案的过滤器。 有关详细信息,请参阅源代码。
unset - 删除所有内容并返回 null
url - 删除不应出现在有效 URL 中的字符
自定义过滤器
要定义自定义过滤器,您必须
-
编写您的过滤器类的代码,例如 Myfilter,它必须实现 \Joomla\CMS\Form\FormFilterInterface - 它必须有一个 filter() 方法,该方法接受源字符串(以及其他参数)并返回过滤后的字符串。
-
在您的表单 XML 文件中,通过在
<field>
标签内或外包含以下属性,告诉 Joomla 在哪里可以找到您的过滤器类
addfilterprefix="My\Component\Example\Site\Filter"
- 通过指定属性 filter="myfilter" 对字段使用您的过滤器。
com_exampleform 组件的代码您可以在 示例表单组件 中找到,其中包含自定义过滤器的示例。
hint
这映射到 HTML placeholder
属性。
pattern
这是一种正则表达式,用于 客户端验证。
showon
这将控制字段是否显示在表单中,这取决于另一个字段的值。 例如(如 示例表单组件 中所示)
<field name="radiofield" type="radio" default="1" >
<option value="1">No showon</option>
<option value="2">This must be selected for showon field</option>
</field>
<field name="textfield" type="text" showon="radiofield:2"/>
只有当单选按钮字段设置为 2 时,才会显示文本字段。
条件可以包含运算符 [AND]
或 [OR]
showon="radio1:2[AND]radio2:2"
您也可以使用
showon="radiofield!:2"
- 如果radiofield
的值不等于 2,则显示showon="somefield!:"
- 如果somefield
有值,则显示 - 即它不是空白/null。
validate
这用于定义要应用的服务器端验证; 请参阅有关 服务器端验证 的部分。
该部分还描述了如何定义自己的自定义验证规则,并且 Exampleform 组件 中显示了一个自定义规则的示例。
value
这定义了字段的默认值,并在字段中显示为 HTML 值,除非 loadFormData
回调导致设置此字段值。 因此,例如,如果由于字段输入无效而重新显示表单,则用户输入的任何以前字段值将被设置为 HTML 字段值,而不是表单 XML 文件中定义的 value=
属性中的值。