为什么表单元素在 Symfony 框架中被称为类型?

Why are form elements called Types in Symfony Framework?

我使用 Symfony Framework 已经有一段时间了,我一直想知道这个问题。

为什么表单元素在 Symfony 框架中称为类型?

非常感谢你给我解释。

这是因为您可以随意链接它们。如果您创建一个自定义表单类型,其中包含您希望在特定页面上显示的所有字段(就像我通常对我创建的每个表单所做的那样),那么您可以在其他表单中重复使用此表单。

一个例子可能是您有一个地址表单类型。在地址视图中,您只能使用地址表来编辑地址。但是现在想想你有一个页面来创建一个新客户。例如,客户实体与地址有关系。无需再次重复此表单类型中的必要字段,您只需指定一个名为 address 的字段,并使用您已经定义的地址类型。现在,地址表单直接嵌入到这个位置,并且还确保创建一个正确类型的对象,以便稍后在将请求绑定到表单时将其设置在用户地址实体上属性。

现在回到最初的问题: 如果您理解这种相互链接形式的概念,我们可以看看 DateType。 DateType 可以配置为单个 HTML5 输入字段,或者它显示为三个单独的 select 字段(一个用于年、月和日)。这里的概念是完全一样的。 DateType 将每个字段定义为 ChoiceType。除此之外,DateType 定义了在将数据绑定到表单时触发的转换器,以确保 da PHP DateTime 对象正确转换为这三个单独的值,反之亦然。

我们还可以想象更上一层楼,想象一个 DateTimeType。如果您手边已有 DateType 和 TimeType,那么创建这样的类型非常简单。您只需定义两个重用这些类型的字段并进行一些转换。

对于 ChoceType,我们还有一个示例,它在内部使用 RadioType 和 CheckboxType 以及 SelectType 来显示不同风格的选择表单。

正如您所看到的,我们称之为完整表单部分和单个字段之间的区别是非常边缘和理论上的。这就是为什么 symfony 在这里的命名没有任何区别。

文档的一些进一步链接:How to Create a Custom Form Field Type