我已经和Symfony Framework合作了一段时间了,我一直想知道这些问题。
为什么表单元素在Symfony Framework中称为类型?
感谢您向我解释。
答案 0 :(得分:6)
这是因为您可以随意链接它们。如果您创建一个自定义表单类型,其中包含您要在特定页面上显示的所有字段(就像我正在创建的每个表单一样),那么您可以在其他表单中重复使用此表单。
一个例子可能是您有地址的表单类型。在地址视图中,您只使用地址表单来编辑地址。但现在认为你有一个页面来创建一个新客户。例如,客户实体与地址有关系。您可以直接使用已定义地址类型的类型指定一个名为address的单个字段,而不是重复此表单类型中的必要字段。现在,地址表单直接嵌入到此位置,并确保创建一个正确类型的对象,以便在将请求绑定到表单时稍后在用户地址实体属性上设置它。
现在回到最初的问题: 如果你理解了彼此链接表单的这个概念,我们可以看一下DateType。 DateType可以配置为单个HTML5输入字段,或者显示为三个单独的选择字段(一个用于年,月和日期)。这里的概念完全相同。 DateType将每个字段定义为ChoiceType。除此之外,DateType定义了在将数据绑定到表单时触发的转换器,以确保将da PHP DateTime对象正确转换为这三个单独的值,反之亦然。
我们还可以设想更高一级并想象一个DateTimeType。如果你手头有DateType和TimeType,那么装箱这样的类型非常简单。您只需要定义两个重用这些类型并进行转换的字段。
对于ChoceType,我们还有一个例子,它在内部使用RadioType和CheckboxType以及SelectType来显示不同风格的选择形式。
因此,当你看到我们称之为完整形式部分和单个字段之间的区别时,它是非常边缘和理论上的。这就是为什么symfony在命名方面没有任何区别。
文档的一些进一步链接:How to Create a Custom Form Field Type