支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
EmailType
字段是一个文本字段,使用 HTML5 的 <input type="email" />
标记进行输出。
Rendered as 输出为 |
input 下属的 email 字段(它是一个文本框) |
Inherited options 继承的选项 |
|
Parent type 父类型 |
TextType |
Class 类 |
EmailType |
以下选项继承自 FormType:
值类型: mixed
默认值: 默认为底层结构的那个字段。
当你创建一个表单时,每个字段显示的初始值,是表单的域数据(domain data,即,表单所绑定的域对象)中的对应属性。如果你要为表单,或为某个字段,来覆写这个初始值,可以这样设置data选项:
1 2 3 4 5 6 | use Symfony\Component\Form\Extension\Core\Type\HiddenType;
// ...
$builder->add('token', HiddenType::class, array(
'data' => 'abcdef',
)); |
Caution
在输出表单时,data
选项 总是 覆写从域数据(对象)中获得的值。 这表明,当表单要编辑一个已经存在的被持久化了的对象(persisted object)时,对象的(属性)值也会被覆写,在提交表单时,将导致表单丢失掉它的已经持久化了的(属性的)值(persited value)。
值类型: boolean
默认值: false
如果你不希望用户修改某个字段的值,可以设置此选项为true。任何被提交的值将被忽略。
值类型: mixed
默认值是 ''
(空串)。
本选项决定的是当提交过来的值是空(或丢失)时,该字段所 返回 的值是什么。在表单输出到view层时,若什么也不提供,它不会设置初始值。
这意味着它会帮你处理提交了空值的表单。例如,如果你希望当没有值被选中的时候, name
字段被显式地设置为 John Doe
,可以像下面这样做:
1 2 3 4 | $builder->add('name', null, array(
'required' => false,
'empty_data' => 'John Doe',
)); |
这仍然会输出一个空框,但随着提交, John Doe
这个值就会被设置。使用 data
或 placeholder
选项即可在输出的表单中显示这个初始值。
如果是复合(compound)表单,你可以把 empty_data
设为一个数组、对象或 closure。参考 如何为表单类配置空数据 一文以了解关于此选项的更多信息。
Note
若你希望为整个表单类设置 empty_data
选项,可参考 如何为表单类配置空数据 一文。
Caution
表单数据转换 仍然适用于 empty_data
值。这意味着空字符串将被扔为 null
。使用自定义的 data transformer,如果你确实希望返回空字符串的话。
值类型: boolean
默认值: false
,除非表单是 compound
的
若是 true
,本字段的任何错误将被传入父级字段或表单。例如,如果在一个普通字段上设为 true
,它的任何一个错误将被附着到主表单上,而不是此特定字段。
值类型: array
默认值: array()
本选项允许你修改验证时的错误信息的目标。
假设你有一个自定义的名为 matchingCityAndZipCode()
的方法,用于验证city和zip code邮编是否匹配。不幸的是,你的表单中并没有一个 "matchingCityAndZipCode" 字段,因此 Symfony 所能做的全部,就是在表单顶部来输出错误信息。
通过自定义错误映射(error mapping),你可以做得更好:把 error 映射到 city 字段,以便它显示到其上方:
这里是映射时左右侧的规则:
propertyName
;array
数组的键或是 ArrayAccess
对象的验证失败,属性路径则是 [indexName]
;addresses[work].matchingCityAndZipCode
;默认时,任何一个未被映射的属性之错误信息,不会被顶到(bubble up)父表单中。你可以在左侧使用逗点 (.
) 来把全部未映射属性的错误给映射到一个特定字段。例如把这些错误映射到 city
字段,就用:
值类型: string
默认值: The label is "guessed" from the field name
这是要设置字段输出时用到的label。设置为 false 将抑制 label。label 也可直接在模板中设置:
1 | {{ form_label(form.name, 'Your name') }} |
1 2 3 4 | echo $view['form']->label(
$form['name'],
'Your name'
); |
值类型: array
默认值: array()
为 <label>
元素设置 HTML 属性,在输出字段 label 时将会用到。这是个关联数组,以 HTML 属性作为键。这个属性也可直接在模板中设置:
值类型: string
默认值: null
配置用作字段的 label 的字符串,如果 label
选项未配置的话。当使用 关键字翻译源 时这很有用。
如果你就是把 keyword translation messages(关键字翻译源) 用作 label,你常会止步于多个关键字条目被用于同一 label (如 profile_address_street
, invoice_address_street
)。这是因为 label 是安排给字段的每一个“路径(path)”的。要避免关键字翻译源的重复,你可以把 label format 配置为一个静态值,比如:
本选项被子类型继承。有了上面的代码,两个表单的 street
字段都会使用 form.address.street
关键字翻译源了。
在label format中有两个变量可用:
%id%
profile_address_street
);%name%
street
)。默认值 (null
) 会令字段名称产生一个 "humanized" 人类可读版本。
Note
label_format
选项在表单主题(form theme)中被计算出来。若你 自定义表单主题,应确保更新模板。
值类型: boolean
默认值: true
当对象被读写时,若你希望字段被忽略,可以设置 mapped
选项为 false
.
值类型: boolean
默认值: true
若是true,HTML5 required attribute 即会输出。对应的 label
亦将连同 required
class 而输出。
这是浅表的选项,且独立于表单验证之外。最好是,如果你用 Symfony 的字段类型猜测,那么此选项的值将从你的验证信息中被猜出来。
Note
required 选项也会影响每个字段中的空值将被如何操作。更多细节参考 empty_data 选项。
值类型: boolean
默认值: true
如果是 true,在数据进行绑定时(data bound),提交的字符串值中的空格将通过 trim
函数而去除。这可以确保当一个提交的数据有空格时,将会在此值被合并入底层对象之前,被清除掉。
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。