跳至主要内容
版本:5.1

标准表单字段属性

标准表单的许多属性直接映射到 HTML 字段属性,不需要进一步解释。 以下描述与含义可能不太明确的属性有关。

您可以查看可用的一般属性列表,方法是查看 libraries/src/Form/FormField.php 中的 __set 函数。 由于许多属性可以在各种 Joomla 标准表单字段中使用,因此在表单字段详细说明中通常不会明确引用它们。

这些属性包括例如

  • onchange - 您可以传递一个 JavaScript 函数,该函数在输入元素发生更改时应该获得控制权
  • autofocus - 指定页面加载时应该获得焦点的输入元素
  • data-xxx - 要在输入元素上设置的数据属性

class

这映射到字段的 HTML 类属性。 除了 CSS 的正常使用之外,它还用于定义要应用的 客户端验证

description

在 Joomla 4 之前,它映射到工具提示。 从 Joomla 4 开始,它将作为单独的文本显示在字段下方。

在管理员后端,描述的可见性/隐藏性由“切换内联帮助”按钮控制。 您可以通过以下操作在您自己的组件的表单中实现此功能

  1. 将“切换内联帮助”按钮添加到您的工具栏
$toolbar = Toolbar::getInstance();
...
$toolbar->inlinehelp();
  1. 将配置添加到您的表单 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 中的字符

自定义过滤器

要定义自定义过滤器,您必须

  1. 编写您的过滤器类的代码,例如 Myfilter,它必须实现 \Joomla\CMS\Form\FormFilterInterface - 它必须有一个 filter() 方法,该方法接受源字符串(以及其他参数)并返回过滤后的字符串。

  2. 在您的表单 XML 文件中,通过在 <field> 标签内或外包含以下属性,告诉 Joomla 在哪里可以找到您的过滤器类

addfilterprefix="My\Component\Example\Site\Filter"
  1. 通过指定属性 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= 属性中的值。