FormType领域
编辑本页FormType领域
的FormType
预定义两个选项,然后在所有类型上可用FormType
是父节点。
默认无效消息 | 此值无效。 |
遗留无效消息 | 此值无效。 |
父 | 没有一个 |
类 | FormType |
提示
这个表单类型定义和继承的完整选项列表可以在你的应用程序中运行这个命令:
1 2
将'FooType'替换为你的表单类型的类名$php bin/console debug:form FooType . php
场的选择
allow_extra_fields
类型:布尔
默认的:假
通常,如果您提交了表单中未配置的额外字段,则会得到“此表单不应包含额外字段”验证错误。
方法可以禁用此验证错误allow_extra_fields
表单上的选项。
by_reference
类型:布尔
默认的:真正的
在大多数情况下,如果你有作者
场,然后你期望setAuthor ()
在底层对象上调用。然而,在某些情况下,setAuthor ()
五月不被称为。设置by_reference
来假
确保在所有情况下都调用setter。
为了进一步解释这一点,这里有一个简单的例子:
12 3 4 5 6 7 8 9 10 11 12 13
使用ob娱乐下载\组件\形式\扩展\核心\类型\EmailType;使用ob娱乐下载\组件\形式\扩展\核心\类型\FormType;使用ob娱乐下载\组件\形式\扩展\核心\类型\TextType;/ /……$构建器=$这->createFormBuilder ($文章);$构建器->add (“标题”, TextType::类)->add ($构建器->创建(“作者”, FormType::类,“by_reference”= > ?)->add (“名字”, TextType::类)->add (“电子邮件”, EmailType::类))
如果by_reference
是真的吗,下面的事情发生在你打电话时的幕后提交()
(或handleRequest ()
)在表格上:
1 2 3
$文章->setTitle (“……”);$文章->getAuthor ()->setName (“……”);$文章->getAuthor ()->setEmail (“……”);
请注意,setAuthor ()
没有调用。作者因引用而有所修改。
如果你设置by_reference
对于false,提交看起来像这样:
1 2 3 4 5
$文章->setTitle (“……”);$作者=克隆$文章->getAuthor ();$作者->setName (“……”);$作者->setEmail (“……”);$文章->setAuthor ($作者);
所有这些by_reference = false
真正做的是它克隆对象,这强制框架在父对象上调用setter。
类似地,如果你使用CollectionType字段,其中您的底层收集数据是一个对象(就像Doctrine的ArrayCollection
),然后by_reference
必须设置为假
如果你需要加法器和移除器(例如。addAuthor ()
而且removeAuthor ()
)被称为。
复合
类型:布尔
默认的:真正的
复合形式可以是一个整体< >形式
元素或一组表单字段(例如在< div >
或< tr >
容器元素)。复合表单使用DataMapperInterface来初始化它们的子表单或回写它们提交的数据。
一个简单的(非复合)表单被呈现为以下HTML元素中的任何一个:<输入>
(TextType
,文件类型
,HiddenType
),textarea > <
(TextareaType
)或<选择>
(ChoiceType
).
一些核心类型,如日期相关类型或ChoiceType
简单还是复合取决于其他选项(例如扩大
或小部件
).