理解和创建具有条件自定义字段的表单
长期以来,Joomla 中条件字段的利用主要是一项任务,由参与表单创建的开发者承担。然而,随着 Joomla 4.3 的推出,现在可以条件性地显示自定义字段,从而提高用户体验。我们将首先解释它是如何工作的,然后我们将向您展示如何在您的 Joomla 内容中使用条件字段。
但这些都是什么条件字段呢?
在 Joomla 的核心框架中,条件字段是依赖于其他字段的状态或值的字段。
当一个字段是“依赖的”时,只有当它所依赖的字段的状态满足正确条件时,该字段才会可用于编辑和显示。
一个实际例子来了解这是如何工作的,就是导航到 Joomla 实例的全局配置并激活缓存设置。
当缓存设置关闭时
当缓存设置开启时,用户将有更多选项可供选择。
这项功能在技术上是如何工作的?
使用名为“showon”的字段属性来提供“可见性”信息。
在我们的例子中,表单是这样构建的
<field
name="caching"
type="list"
label="COM_CONFIG_FIELD_CACHE_LABEL"
default="2"
filter="integer"
validate="options"
>
<option value="0">COM_CONFIG_FIELD_VALUE_CACHE_OFF</option>
<option value="1">COM_CONFIG_FIELD_VALUE_CACHE_CONSERVATIVE</option>
<option value="2">COM_CONFIG_FIELD_VALUE_CACHE_PROGRESSIVE</option>
</field>
<field
name="cache_handler"
type="cachehandler"
label="COM_CONFIG_FIELD_CACHE_HANDLER_LABEL"
default=""
filter="word"
showon="caching:1,2"
/>
使用“showon”,我们告诉 Joomla 只有当“caching
”字段值为 1 或 2 时才显示“cache_handler
”字段。
有相当多的可能配置
foo:1[AND]bar:3,4
如果 foo 的值为 1 并且 bar 的值为 3 或 4,则该字段将显示。
foo:1[OR]bar:3,4
如果 foo 的值为 1 或者 bar 的值为 3 或 4,则该字段将显示。
foo!:1
如果 foo 有任何值但不是 1,则该字段将显示。
foo!:
如果 foo 有任何值但不是空值,则该字段将显示。
您可以在https://docs.joomla.org/Form_field#Showon找到有关“showon”属性语法的更多信息。
虽然这个功能非常有效,但关键是要理解这个增强是在用户界面级别实现的。尽管一些字段被隐藏,但保存表单时仍会记录之前设置的值或默认字段值。
通常,这不是什么大问题。开发者可以处理这些值并正确评估它们。例如,在之前的例子中,当Joomla缓存设置为关闭时,代码不会考虑缓存设置的隐藏值,即使这些值已经设置。
如果你想知道为什么你应该关注这个属性,那是因为它为你提供了对自定义字段更多控制和灵活性。自Joomla 4.3以来,你可以使用这个属性来指定自定义字段的显示方式。这对于创建更友好和一致的形式非常有用。
在创建自定义字段时,导航到“选项”选项卡以发现“showon属性”参数。
让我们通过一个实际例子看看如何利用这个参数。
为文章创建一个类型为“列表”的自定义字段。该字段列出了不同类型的车辆(汽车、卡车或自行车)。
现在,创建一个类型为“文本”的新字段,该字段将记录注册号码,仅适用于汽车或卡车。
“选项”选项卡
在“showon属性”字段中,输入名称“type”,然后列出值“car”和“truck”,这是“类型”字段必须具有的值,以便将“注册号码”字段渲染为可见。
因此,在编辑文章期间,字段将遵循设置的条件。
当选择“汽车”时,可以输入注册号码。
子表单字段呢?
虽然这并不一定更复杂,但它确实需要一点仔细的注意。这是因为当子字段被记录时,它们会失去原始名称,而是通过它们的ID进行引用。
让我们将之前创建的字段添加到一个名为“车辆”的子表单中。
“类型”字段的ID是5。我们需要将条件值的第一个部分从“type”更改为“field5”(我们使用关键字“field”与字段的ID连接)。
这导致了一个可以添加车辆到文章的表单,可以带或不带注册号码,遵循设置的规则。
请记住,即使字段因条件而不可见,输入的字段值仍然会被存储。这可能会影响您设计表单的方式以及以后如何使用数据。
为了避免混淆和防止错误,如果一个字段可以通过条件隐藏,则不要将其设置为必填。否则,用户可能因为隐藏字段中缺少值而无法保存表单。
在Joomla社区杂志上发表的一些文章代表了作者对特定主题的个人意见或经验,可能不代表Joomla项目的官方立场。
通过接受,您将访问 https://magazine.joomla.net.cn/ 之外第三方提供的服务
评论