如何自定义表单渲染
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.0,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
form_row函数或行
PHP helper方法:
- 嫩枝跨度>李><李data-language="php">PHP跨度>李>
1
{{form_row(form.age)}}跨度>
1
<?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>行(<跨度类="hljs-variable">$跨度>形式跨度>[<跨度类="hljs-string">“年龄”跨度>])}}<跨度类="hljs-meta">? >跨度>
你也可以分别渲染字段的三个部分:
- 嫩枝跨度>李><李data-language="php">PHP跨度>李>
1 2 3 4 5
<<跨度类="hljs-name">div跨度>>跨度>跨度><跨度类="hljs-template-variable">{{form_label(form.age)}}跨度><跨度类="xml">{{form_errors(form.age)}}跨度><跨度类="xml">{{form_widget(form.age)}}跨度><跨度类="xml"><跨度类="hljs-name">div跨度>>跨度>跨度>
1 2 3 4 5
< div ><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>标签(<跨度类="hljs-variable">$跨度>形式跨度>[<跨度类="hljs-string">“年龄”跨度>])}}<跨度类="hljs-meta">? >跨度><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>错误(<跨度类="hljs-variable">$跨度>形式跨度>[<跨度类="hljs-string">“年龄”跨度>])}}<跨度类="hljs-meta">? >跨度><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>小部件(<跨度类="hljs-variable">$跨度>形式跨度>[<跨度类="hljs-string">“年龄”跨度>])}}<跨度类="hljs-meta">? >跨度> div >
在这两种情况下,表单标签、错误和HTML小部件都是通过使用一组标配Symfony的标记来呈现的。ob娱乐下载例如,上面的两个模板都将呈现:
1 2 3 4 5 6 7
<<跨度类="hljs-name">div跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">标签跨度><跨度类="hljs-attr">为跨度>=<跨度类="hljs-string">“form_age”跨度>>跨度>年龄<跨度类="hljs-tag"><跨度类="hljs-name">标签跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">ul跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">李跨度>>跨度>此字段为必填项<跨度类="hljs-tag"><跨度类="hljs-name">李跨度>>跨度><跨度类="hljs-tag"><跨度类="hljs-name">ul跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">输入跨度><跨度类="hljs-attr">类型跨度>=<跨度类="hljs-string">“数量”跨度><跨度类="hljs-attr">id跨度>=<跨度类="hljs-string">“form_age”跨度><跨度类="hljs-attr">的名字跨度>=<跨度类="hljs-string">“形式[时代]”跨度>/>跨度><跨度类="hljs-tag"><跨度类="hljs-name">div跨度>>跨度>
为了快速原型化和测试表单,你可以用一行渲染整个表单:
- 嫩枝跨度>李><李data-language="php">PHP跨度>李>
1
{{form_widget(form)}}跨度>
1
<?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>小部件(<跨度类="hljs-variable">$跨度>形式跨度>)}}<跨度类="hljs-meta">? >跨度>
本菜谱的其余部分将解释如何在不同级别修改表单标记的每个部分。有关表单呈现的更多信息,请参见形式.
行
PHP helper方法:
- 嫩枝跨度>李><李data-language="php">PHP跨度>李>
1
{{form_row(form.age)}}跨度>
1
<?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>行(<跨度类="hljs-variable">$跨度>形式跨度>[<跨度类="hljs-string">“年龄”跨度>])}}<跨度类="hljs-meta">? >跨度>
你也可以分别渲染字段的三个部分:
- 嫩枝跨度>李><李data-language="php">PHP跨度>李>
1 2 3 4 5
<<跨度类="hljs-name">div跨度>>跨度>跨度><跨度类="hljs-template-variable">{{form_label(form.age)}}跨度><跨度类="xml">{{form_errors(form.age)}}跨度><跨度类="xml">{{form_widget(form.age)}}跨度><跨度类="xml"><跨度类="hljs-name">div跨度>>跨度>跨度>
1 2 3 4 5
< div ><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>标签(<跨度类="hljs-variable">$跨度>形式跨度>[<跨度类="hljs-string">“年龄”跨度>])}}<跨度类="hljs-meta">? >跨度><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>错误(<跨度类="hljs-variable">$跨度>形式跨度>[<跨度类="hljs-string">“年龄”跨度>])}}<跨度类="hljs-meta">? >跨度><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>小部件(<跨度类="hljs-variable">$跨度>形式跨度>[<跨度类="hljs-string">“年龄”跨度>])}}<跨度类="hljs-meta">? >跨度> div >
在这两种情况下,表单标签、错误和HTML小部件都是通过使用一组标配Symfony的标记来呈现的。ob娱乐下载例如,上面的两个模板都将呈现:
1 2 3 4 5 6 7
<<跨度类="hljs-name">div跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">标签跨度><跨度类="hljs-attr">为跨度>=<跨度类="hljs-string">“form_age”跨度>>跨度>年龄<跨度类="hljs-tag"><跨度类="hljs-name">标签跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">ul跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">李跨度>>跨度>此字段为必填项<跨度类="hljs-tag"><跨度类="hljs-name">李跨度>>跨度><跨度类="hljs-tag"><跨度类="hljs-name">ul跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">输入跨度><跨度类="hljs-attr">类型跨度>=<跨度类="hljs-string">“数量”跨度><跨度类="hljs-attr">id跨度>=<跨度类="hljs-string">“form_age”跨度><跨度类="hljs-attr">的名字跨度>=<跨度类="hljs-string">“形式[时代]”跨度>/>跨度><跨度类="hljs-tag"><跨度类="hljs-name">div跨度>>跨度>
为了快速原型化和测试表单,你可以用一行渲染整个表单:
- 嫩枝跨度>李><李data-language="php">PHP跨度>李>
1
{{form_widget(form)}}跨度>
1
<?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>小部件(<跨度类="hljs-variable">$跨度>形式跨度>)}}<跨度类="hljs-meta">? >跨度>
本菜谱的其余部分将解释如何在不同级别修改表单标记的每个部分。有关表单呈现的更多信息,请参见形式.
输入文本字段,选择
标签等
这些片段在Twig中定义为块,在PHP中定义为模板文件。
一个主题只不过是在呈现表单时要使用的一组片段。换句话说,如果您想自定义表单呈现方式的一部分,您将导入一个主题其中包含适当的表单片段的自定义。
ob娱乐下载Symfony自带一个默认主题(form_div_layout.html.twig在树枝和FrameworkBundle:形式
在PHP中),它定义了渲染表单的每个部分所需的每个片段。
在下一节中,您将学习如何通过覆盖主题的部分或全部片段来定制主题。
例如,当小部件的整数
类型字段被呈现输入
数量
字段生成
- 嫩枝跨度>李><李data-language="php">PHP跨度>李>
1
{{form_widget(form.age)}}跨度>
1
<?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>小部件(<跨度类="hljs-variable">$跨度>形式跨度>[<跨度类="hljs-string">“年龄”跨度>])<跨度类="hljs-meta">? >跨度>
呈现:
1
<<跨度类="hljs-name">输入跨度><跨度类="hljs-attr">类型跨度>=<跨度类="hljs-string">“数量”跨度><跨度类="hljs-attr">id跨度>=<跨度类="hljs-string">“form_age”跨度><跨度类="hljs-attr">的名字跨度>=<跨度类="hljs-string">“形式[时代]”跨度><跨度类="hljs-attr">要求跨度>=<跨度类="hljs-string">“要求”跨度><跨度类="hljs-attr">价值跨度>=<跨度类="hljs-string">“33”跨度>/>跨度>
在内部,Symfony使ob娱乐下载用integer_widget
片段来呈现字段。这是因为字段类型是整数
你在渲染它小部件
(与之相反标签
或错误
).
在Twig中,这将默认为块integer_widget
从form_div_layout.html.twig模板。
在PHP中,应该是integer_widget.html.php
文件位于FrameworkBundle /资源/视图/形式
文件夹中。
方法的默认实现integer_widget
片段是这样的:
- 嫩枝跨度>李><李data-language="html+php">PHP跨度>李>
1 2 3 4 5
{# form_div_layout.html。树枝#}跨度><跨度类="xml">{%<跨度类="hljs-name">块跨度>跨度>integer_widget %}跨度><跨度类="xml">{%<跨度类="hljs-name">集跨度>跨度>Type = Type |<跨度类="hljs-keyword">默认的跨度>(数量)%}跨度><跨度类="xml">{{<跨度类="hljs-name">块跨度><跨度类="hljs-params">(“field_widget”)跨度>}}跨度><跨度类="xml">{%<跨度类="hljs-name">endblock跨度>跨度>integer_widget %}跨度>
1 2
<!--integer_widget.html.php-->跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>renderBlock (<跨度类="hljs-string">“field_widget”跨度>,<跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“类型”跨度>=><跨度类="hljs-keyword">收取跨度>(<跨度类="hljs-variable">$跨度>类型跨度>)?<跨度类="hljs-variable">$跨度>类型跨度>:<跨度类="hljs-string">“数量”跨度>))<跨度类="hljs-meta">? >跨度>跨度>
如您所见,这个片段本身呈现了另一个片段-field_widget
:
- 嫩枝跨度>李><李data-language="html+php">PHP跨度>李>
1 2 3 4 5
{# form_div_layout.html。树枝#}跨度><跨度类="xml">{%<跨度类="hljs-name">块跨度>跨度>field_widget %}跨度><跨度类="xml">{%<跨度类="hljs-name">集跨度>跨度>Type = Type |<跨度类="hljs-keyword">默认的跨度>('文本')%}跨度><跨度类="xml"><<跨度类="hljs-name">输入跨度><跨度类="hljs-attr">类型跨度>=<跨度类="hljs-string">"跨度>跨度>跨度><跨度类="hljs-template-variable">{{type}}跨度><跨度类="xml">"跨度>跨度>跨度><跨度类="hljs-template-variable">{{<跨度类="hljs-name">块跨度><跨度类="hljs-params">(“widget_attributes”)跨度>}}跨度><跨度类="xml">价值跨度>=<跨度类="hljs-string">"跨度>跨度>跨度><跨度类="hljs-template-variable">{{value}}跨度><跨度类="xml">"跨度>/>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">endblock跨度>跨度>field_widget %}跨度>
1 2 3 4 5 6
<!--FrameworkBundle /资源/视图/形式/field_widget.html.php -->跨度><跨度类="hljs-tag"><<跨度类="hljs-name">输入跨度><跨度类="hljs-attr">类型跨度>=<跨度类="hljs-string">“< ?php回声收取(美元)类型) ?$view->转义($type): "跨度><跨度类="hljs-attr">文本跨度>”? >跨度>“价值= "<跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度><跨度类="hljs-operator">->跨度>逃避(<跨度类="hljs-variable">$跨度>价值跨度>)<跨度类="hljs-meta">? >跨度>跨度>"<跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>renderBlock (<跨度类="hljs-string">“属性”跨度>)<跨度类="hljs-meta">? >跨度>跨度>/>
关键是,这些片段指示了表单每个部分的HTML输出。要自定义表单输出,只需要识别并覆盖正确的片段。一组这样的表单片段自定义称为表单“主题”。呈现表单时,可以选择要应用的表单主题。
在Twig中,主题是一个单独的模板文件,片段是这个文件中定义的块。
在PHP中,主题是一个文件夹,片段是文件夹中的单个模板文件。
知道要定制哪个块跨度>
在本例中,自定义片段名称为integer_widget
因为你想重写HTML小部件
对所有整数
字段类型。如果您需要自定义文本区域字段,您将自定义textarea_widget
.
正如您所看到的,片段名称是字段类型和字段的哪个部分被呈现的组合(例如。小部件
,标签
,错误
,行
).因此,自定义如何仅为输入呈现错误文本
字段时,应自定义text_errors
片段。
但是,更常见的情况是,您希望自定义错误的显示方式所有字段。属性可以实现这一点field_errors
片段。这利用了字段类型继承。具体来说,因为文本
类型从场
类型,表单组件将首先查找特定于类型的片段(例如。text_errors
),然后退回到它的父片段名称,如果它不存在(例如;field_errors
).
有关此主题的详细信息,请参见形式.
FrameworkBundle:形式
在PHP中),它定义了渲染表单的每个部分所需的每个片段。整数
类型字段被呈现输入
数量
字段生成- 嫩枝跨度>李><李data-language="php">PHP跨度>李>
1
{{form_widget(form.age)}}跨度>
1
<?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>小部件(<跨度类="hljs-variable">$跨度>形式跨度>[<跨度类="hljs-string">“年龄”跨度>])<跨度类="hljs-meta">? >跨度>
1
<<跨度类="hljs-name">输入跨度><跨度类="hljs-attr">类型跨度>=<跨度类="hljs-string">“数量”跨度><跨度类="hljs-attr">id跨度>=<跨度类="hljs-string">“form_age”跨度><跨度类="hljs-attr">的名字跨度>=<跨度类="hljs-string">“形式[时代]”跨度><跨度类="hljs-attr">要求跨度>=<跨度类="hljs-string">“要求”跨度><跨度类="hljs-attr">价值跨度>=<跨度类="hljs-string">“33”跨度>/>跨度>
integer_widget
片段来呈现字段。这是因为字段类型是整数
你在渲染它小部件
(与之相反标签
或错误
).integer_widget
从form_div_layout.html.twig模板。integer_widget.html.php
文件位于FrameworkBundle /资源/视图/形式
文件夹中。integer_widget
片段是这样的:- 嫩枝跨度>李><李data-language="html+php">PHP跨度>李>
1 2 3 4 5
{# form_div_layout.html。树枝#}跨度><跨度类="xml">{%<跨度类="hljs-name">块跨度>跨度>integer_widget %}跨度><跨度类="xml">{%<跨度类="hljs-name">集跨度>跨度>Type = Type |<跨度类="hljs-keyword">默认的跨度>(数量)%}跨度><跨度类="xml">{{<跨度类="hljs-name">块跨度><跨度类="hljs-params">(“field_widget”)跨度>}}跨度><跨度类="xml">{%<跨度类="hljs-name">endblock跨度>跨度>integer_widget %}跨度>
1 2
<!--integer_widget.html.php-->跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>renderBlock (<跨度类="hljs-string">“field_widget”跨度>,<跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“类型”跨度>=><跨度类="hljs-keyword">收取跨度>(<跨度类="hljs-variable">$跨度>类型跨度>)?<跨度类="hljs-variable">$跨度>类型跨度>:<跨度类="hljs-string">“数量”跨度>))<跨度类="hljs-meta">? >跨度>跨度>
field_widget
:- 嫩枝跨度>李><李data-language="html+php">PHP跨度>李>
1 2 3 4 5
{# form_div_layout.html。树枝#}跨度><跨度类="xml">{%<跨度类="hljs-name">块跨度>跨度>field_widget %}跨度><跨度类="xml">{%<跨度类="hljs-name">集跨度>跨度>Type = Type |<跨度类="hljs-keyword">默认的跨度>('文本')%}跨度><跨度类="xml"><<跨度类="hljs-name">输入跨度><跨度类="hljs-attr">类型跨度>=<跨度类="hljs-string">"跨度>跨度>跨度><跨度类="hljs-template-variable">{{type}}跨度><跨度类="xml">"跨度>跨度>跨度><跨度类="hljs-template-variable">{{<跨度类="hljs-name">块跨度><跨度类="hljs-params">(“widget_attributes”)跨度>}}跨度><跨度类="xml">价值跨度>=<跨度类="hljs-string">"跨度>跨度>跨度><跨度类="hljs-template-variable">{{value}}跨度><跨度类="xml">"跨度>/>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">endblock跨度>跨度>field_widget %}跨度>
1 2 3 4 5 6
<!--FrameworkBundle /资源/视图/形式/field_widget.html.php -->跨度><跨度类="hljs-tag"><<跨度类="hljs-name">输入跨度><跨度类="hljs-attr">类型跨度>=<跨度类="hljs-string">“< ?php回声收取(美元)类型) ?$view->转义($type): "跨度><跨度类="hljs-attr">文本跨度>”? >跨度>“价值= "<跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度><跨度类="hljs-operator">->跨度>逃避(<跨度类="hljs-variable">$跨度>价值跨度>)<跨度类="hljs-meta">? >跨度>跨度>"<跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>renderBlock (<跨度类="hljs-string">“属性”跨度>)<跨度类="hljs-meta">? >跨度>跨度>/>
知道要定制哪个块跨度>
在本例中,自定义片段名称为integer_widget
因为你想重写HTML小部件
对所有整数
字段类型。如果您需要自定义文本区域字段,您将自定义textarea_widget
.
正如您所看到的,片段名称是字段类型和字段的哪个部分被呈现的组合(例如。小部件
,标签
,错误
,行
).因此,自定义如何仅为输入呈现错误文本
字段时,应自定义text_errors
片段。
但是,更常见的情况是,您希望自定义错误的显示方式所有字段。属性可以实现这一点field_errors
片段。这利用了字段类型继承。具体来说,因为文本
类型从场
类型,表单组件将首先查找特定于类型的片段(例如。text_errors
),然后退回到它的父片段名称,如果它不存在(例如;field_errors
).
有关此主题的详细信息,请参见形式.
这两种方法效果相同,但在不同情况下效果更好。
form_div_layout.html.twig,粘贴到另一个模板,然后自定义。在许多情况下,可以通过在自定义时引用基块来避免这样做。
这很容易做到,但略有不同,这取决于您的表单块自定义是在与表单相同的模板中,还是在单独的模板中。
使用在你渲染表单的模板中标记:
1
{%<跨度类="hljs-name">使用跨度>跨度>“form_div_layout.html。用integer_widget作为base_integer_widget %}跨度>
现在,当积木从form_div_layout.html.twig都是进口的,integer_widget
Block被称为base_integer_widget
.这意味着当你重新定义integer_widget
块,您可以引用默认标记通过base_integer_widget
:
1 2 3 4 5
{%<跨度类="hljs-name">块跨度>跨度>integer_widget %}跨度><跨度类="xml"><<跨度类="hljs-name">div跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“integer_widget”跨度>>跨度>跨度><跨度类="hljs-template-variable">{{<跨度类="hljs-name">块跨度><跨度类="hljs-params">(“base_integer_widget”)跨度>}}跨度><跨度类="xml"><跨度类="hljs-name">div跨度>>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">endblock跨度>跨度>%}跨度>
1
{%<跨度类="hljs-name">使用跨度>跨度>“form_div_layout.html。用integer_widget作为base_integer_widget %}跨度>
integer_widget
Block被称为base_integer_widget
.这意味着当你重新定义integer_widget
块,您可以引用默认标记通过base_integer_widget
:1 2 3 4 5
{%<跨度类="hljs-name">块跨度>跨度>integer_widget %}跨度><跨度类="xml"><<跨度类="hljs-name">div跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“integer_widget”跨度>>跨度>跨度><跨度类="hljs-template-variable">{{<跨度类="hljs-name">块跨度><跨度类="hljs-params">(“base_integer_widget”)跨度>}}跨度><跨度类="xml"><跨度类="hljs-name">div跨度>>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">endblock跨度>跨度>%}跨度>
AcmeDemoBundle:形式:fields.html.twig模板将在呈现表单时全局使用。
- YAML跨度>李><李data-language="xml">XML跨度>李><李data-language="php">PHP跨度>李>
1 2 3 4 5 6
# app / config / config.yml跨度><跨度类="hljs-attr">枝:跨度><跨度类="hljs-attr">形式:跨度><跨度类="hljs-attr">资源:跨度><跨度类="hljs-bullet">-跨度><跨度类="hljs-string">“AcmeDemoBundle:形式:fields.html.twig”跨度><跨度类="hljs-comment">#……跨度>
1 2 3 4 5 6 7
<!--app/config/config.xml -->跨度><跨度类="hljs-tag"><<跨度类="hljs-name">枝:配置跨度><跨度类="hljs-attr">...跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">枝:形式跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">资源跨度>>跨度>一个cmeDemoBundle:形式:fields.html.twig<跨度类="hljs-tag"><跨度类="hljs-name">资源跨度>>跨度><跨度类="hljs-tag"><跨度类="hljs-name">枝:形式跨度>>跨度><跨度类="hljs-comment"><!--...-->跨度><跨度类="hljs-tag"><跨度类="hljs-name">枝:配置跨度>>跨度>
1 2 3 4 5 6 7 8 9 10
/ / app / config / config . php跨度><跨度类="hljs-variable">$跨度>容器跨度><跨度类="hljs-operator">->跨度>loadFromExtension (<跨度类="hljs-string">“树枝”跨度>,<跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“形式”跨度>=><跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“资源”跨度>=><跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“AcmeDemoBundle:形式:fields.html.twig”跨度>,),),<跨度类="hljs-comment">/ /……跨度>));
默认情况下,Twig使用div呈现表单时的布局。然而,有些人可能更喜欢在控件中呈现表单表格布局。使用form_table_layout.html.twig
资源使用这样的布局:
- YAML跨度>李><李data-language="xml">XML跨度>李><李data-language="php">PHP跨度>李>
1 2 3 4 5
# app / config / config.yml跨度><跨度类="hljs-attr">枝:跨度><跨度类="hljs-attr">形式:跨度><跨度类="hljs-attr">资源:跨度><跨度类="hljs-string">(“form_table_layout.html.twig”)跨度><跨度类="hljs-comment">#……跨度>
1 2 3 4 5 6 7
<!--app/config/config.xml -->跨度><跨度类="hljs-tag"><<跨度类="hljs-name">枝:配置跨度><跨度类="hljs-attr">...跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">枝:形式跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">资源跨度>>跨度>form_table_layout.html.twig<跨度类="hljs-tag"><跨度类="hljs-name">资源跨度>>跨度><跨度类="hljs-tag"><跨度类="hljs-name">枝:形式跨度>>跨度><跨度类="hljs-comment"><!--...-->跨度><跨度类="hljs-tag"><跨度类="hljs-name">枝:配置跨度>>跨度>
1 2 3 4 5 6 7 8 9 10
/ / app / config / config . php跨度><跨度类="hljs-variable">$跨度>容器跨度><跨度类="hljs-operator">->跨度>loadFromExtension (<跨度类="hljs-string">“树枝”跨度>,<跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“形式”跨度>=><跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“资源”跨度>=><跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“form_table_layout.html.twig”跨度>,),),<跨度类="hljs-comment">/ /……跨度>));
如果您只想在一个模板中进行更改,请在模板文件中添加以下行,而不是将模板作为资源添加:
1
{%<跨度类="hljs-name">form_theme跨度>“form_table_layout.html形式。嫩枝' %}跨度>
注意形式
上面代码中的变量是传递给模板的表单视图变量。
- YAML跨度>李><李data-language="xml">XML跨度>李><李data-language="php">PHP跨度>李>
1 2 3 4 5 6
# app / config / config.yml跨度><跨度类="hljs-attr">枝:跨度><跨度类="hljs-attr">形式:跨度><跨度类="hljs-attr">资源:跨度><跨度类="hljs-bullet">-跨度><跨度类="hljs-string">“AcmeDemoBundle:形式:fields.html.twig”跨度><跨度类="hljs-comment">#……跨度>
1 2 3 4 5 6 7
<!--app/config/config.xml -->跨度><跨度类="hljs-tag"><<跨度类="hljs-name">枝:配置跨度><跨度类="hljs-attr">...跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">枝:形式跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">资源跨度>>跨度>一个cmeDemoBundle:形式:fields.html.twig<跨度类="hljs-tag"><跨度类="hljs-name">资源跨度>>跨度><跨度类="hljs-tag"><跨度类="hljs-name">枝:形式跨度>>跨度><跨度类="hljs-comment"><!--...-->跨度><跨度类="hljs-tag"><跨度类="hljs-name">枝:配置跨度>>跨度>
1 2 3 4 5 6 7 8 9 10
/ / app / config / config . php跨度><跨度类="hljs-variable">$跨度>容器跨度><跨度类="hljs-operator">->跨度>loadFromExtension (<跨度类="hljs-string">“树枝”跨度>,<跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“形式”跨度>=><跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“资源”跨度>=><跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“AcmeDemoBundle:形式:fields.html.twig”跨度>,),),<跨度类="hljs-comment">/ /……跨度>));
默认情况下,Twig使用div呈现表单时的布局。然而,有些人可能更喜欢在控件中呈现表单表格布局。使用form_table_layout.html.twig
资源使用这样的布局:
- YAML跨度>李><李data-language="xml">XML跨度>李><李data-language="php">PHP跨度>李>
1 2 3 4 5
# app / config / config.yml跨度><跨度类="hljs-attr">枝:跨度><跨度类="hljs-attr">形式:跨度><跨度类="hljs-attr">资源:跨度><跨度类="hljs-string">(“form_table_layout.html.twig”)跨度><跨度类="hljs-comment">#……跨度>
1 2 3 4 5 6 7
<!--app/config/config.xml -->跨度><跨度类="hljs-tag"><<跨度类="hljs-name">枝:配置跨度><跨度类="hljs-attr">...跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">枝:形式跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">资源跨度>>跨度>form_table_layout.html.twig<跨度类="hljs-tag"><跨度类="hljs-name">资源跨度>>跨度><跨度类="hljs-tag"><跨度类="hljs-name">枝:形式跨度>>跨度><跨度类="hljs-comment"><!--...-->跨度><跨度类="hljs-tag"><跨度类="hljs-name">枝:配置跨度>>跨度>
1 2 3 4 5 6 7 8 9 10
/ / app / config / config . php跨度><跨度类="hljs-variable">$跨度>容器跨度><跨度类="hljs-operator">->跨度>loadFromExtension (<跨度类="hljs-string">“树枝”跨度>,<跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“形式”跨度>=><跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“资源”跨度>=><跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“form_table_layout.html.twig”跨度>,),),<跨度类="hljs-comment">/ /……跨度>));
如果您只想在一个模板中进行更改,请在模板文件中添加以下行,而不是将模板作为资源添加:
1
{%<跨度类="hljs-name">form_theme跨度>“form_table_layout.html形式。嫩枝' %}跨度>
注意形式
上面代码中的变量是传递给模板的表单视图变量。
命名表单块).
在下一节中,您将看到如何进行几种常见的表单自定义。方法中描述的方法之一可应用这些自定义如何自定义表单渲染部分。
有许多不同的方法可以自定义在提交带有错误的表单时如何呈现错误。属性时呈现字段的错误消息form_errors
助手:
- 嫩枝跨度>李><李data-language="php">PHP跨度>李>
1
{{form_errors(form.age)}}跨度>
1
<?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>错误(<跨度类="hljs-variable">$跨度>形式跨度>[<跨度类="hljs-string">“年龄”跨度>]);<跨度类="hljs-meta">? >跨度>
默认情况下,错误在一个无序列表中呈现:
1 2 3
<<跨度类="hljs-name">ul跨度>>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">李跨度>>跨度>此字段为必填项<跨度类="hljs-tag"><跨度类="hljs-name">李跨度>>跨度><跨度类="hljs-tag"><跨度类="hljs-name">ul跨度>>跨度>
重写错误的呈现方式所有字段,只需复制,粘贴和自定义field_errors
片段。
- 嫩枝跨度>李><李data-language="html+php">PHP跨度>李>
12 3 4 5 6 7 8 9 10 11 12
{# fields_errors.html。树枝#}跨度><跨度类="xml">{%<跨度类="hljs-name">块跨度>跨度>field_errors %}跨度><跨度类="xml">{%<跨度类="hljs-name">没有余地的跨度>%}跨度><跨度类="xml">{%<跨度类="hljs-name">如果跨度>跨度>错误|<跨度类="hljs-keyword">长度跨度>>0%}跨度><跨度类="xml"><<跨度类="hljs-name">ul跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“error_list”跨度>>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">为跨度>跨度>错误%}中的错误跨度><跨度类="xml"><<跨度类="hljs-name">李跨度>>跨度>跨度><跨度类="hljs-template-variable">{{error.messageTemplate |反式(错误。messageParameters, 'validators')}}跨度><跨度类="xml"><跨度类="hljs-name">李跨度>>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">endfor跨度>跨度>%}跨度><跨度类="xml"><跨度类="hljs-name">ul跨度>>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">endif跨度>跨度>%}跨度><跨度类="xml">{%<跨度类="hljs-name">endspaceless跨度>%}跨度><跨度类="xml">{%<跨度类="hljs-name">endblock跨度>跨度>field_errors %}跨度>
12 3 4 5 6 7 8 9 10 11 12
<!--场s_errors.html.php -->跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">如果跨度>(<跨度类="hljs-variable">$跨度>错误跨度>):<跨度类="hljs-meta">? >跨度>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">ul跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“error_list”跨度>>跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">foreach跨度>(<跨度类="hljs-variable">$跨度>错误跨度><跨度类="hljs-keyword">作为跨度><跨度类="hljs-variable">$跨度>错误跨度>):<跨度类="hljs-meta">? >跨度>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">李跨度>>跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“翻译”跨度>]<跨度类="hljs-operator">->跨度>反式(<跨度类="hljs-variable">$跨度>错误跨度><跨度类="hljs-operator">->跨度>getMessageTemplate (),<跨度类="hljs-variable">$跨度>错误跨度><跨度类="hljs-operator">->跨度>getMessageParameters (),<跨度类="hljs-string">“验证”跨度>)<跨度类="hljs-meta">? >跨度>跨度><跨度类="hljs-tag"><跨度类="hljs-name">李跨度>>跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">endforeach跨度>;<跨度类="hljs-meta">? >跨度>跨度><跨度类="hljs-tag"><跨度类="hljs-name">ul跨度>>跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">endif跨度><跨度类="hljs-meta">? >跨度>跨度>
提示跨度>
看到如何自定义表单渲染关于如何应用此定制。
您还可以为一个特定的字段类型定制错误输出。例如,某些对你的表单更全局的错误(即不特定于一个字段)会单独呈现,通常在你的表单顶部:
- 嫩枝跨度>李><李data-language="php">PHP跨度>李>
1
{{form_errors(form)}}跨度>
1
<?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>呈现(<跨度类="hljs-variable">$跨度>形式跨度>);<跨度类="hljs-meta">? >跨度>
定制只有用于这些错误的标记遵循与上面相同的方向,但是现在调用块form_errors
(树枝)/文件form_errors.html.php
(PHP)。现在,当错误为形式
类型,你的自定义片段将被使用而不是默认的field_errors
.
form_row函数,它呈现字段的标签、错误和HTML小部件。自定义用于呈现的标记所有窗体字段行,重写field_row
片段。类中添加类div
元素围绕每一行:
- 嫩枝跨度>李><李data-language="html+php">PHP跨度>李>
1 2 3 4 5 6 7 8
{# field_row.html。树枝#}跨度><跨度类="xml">{%<跨度类="hljs-name">块跨度>跨度>field_row %}跨度><跨度类="xml"><<跨度类="hljs-name">div跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“form_row”跨度>>跨度>跨度><跨度类="hljs-template-variable">{{form_label(form)}}跨度><跨度类="xml">{{form_errors(form)}}跨度><跨度类="xml">{{form_widget(form)}}跨度><跨度类="xml"><跨度类="hljs-name">div跨度>>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">endblock跨度>跨度>field_row %}跨度>
1 2 3 4 5 6
<!--field_row.html.php -->跨度><跨度类="hljs-tag"><<跨度类="hljs-name">div跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“form_row”跨度>>跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>标签(<跨度类="hljs-variable">$跨度>形式跨度>)<跨度类="hljs-meta">? >跨度>跨度><跨度类="php"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>错误(<跨度类="hljs-variable">$跨度>形式跨度>)<跨度类="hljs-meta">? >跨度>跨度><跨度类="php"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>小部件(<跨度类="hljs-variable">$跨度>形式跨度>)<跨度类="hljs-meta">? >跨度>跨度><跨度类="hljs-tag"><跨度类="hljs-name">div跨度>>跨度>
提示跨度>
看到如何自定义表单渲染关于如何应用此定制。
- 嫩枝跨度>李><李data-language="html+php">PHP跨度>李>
1 2 3 4 5 6 7 8
{# field_row.html。树枝#}跨度><跨度类="xml">{%<跨度类="hljs-name">块跨度>跨度>field_row %}跨度><跨度类="xml"><<跨度类="hljs-name">div跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“form_row”跨度>>跨度>跨度><跨度类="hljs-template-variable">{{form_label(form)}}跨度><跨度类="xml">{{form_errors(form)}}跨度><跨度类="xml">{{form_widget(form)}}跨度><跨度类="xml"><跨度类="hljs-name">div跨度>>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">endblock跨度>跨度>field_row %}跨度>
1 2 3 4 5 6
<!--field_row.html.php -->跨度><跨度类="hljs-tag"><<跨度类="hljs-name">div跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“form_row”跨度>>跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>标签(<跨度类="hljs-variable">$跨度>形式跨度>)<跨度类="hljs-meta">? >跨度>跨度><跨度类="php"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>错误(<跨度类="hljs-variable">$跨度>形式跨度>)<跨度类="hljs-meta">? >跨度>跨度><跨度类="php"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>小部件(<跨度类="hljs-variable">$跨度>形式跨度>)<跨度类="hljs-meta">? >跨度>跨度><跨度类="hljs-tag"><跨度类="hljs-name">div跨度>>跨度>
提示跨度>
看到如何自定义表单渲染关于如何应用此定制。
*),可以通过自定义field_label
片段。
在Twig中,如果您在与表单相同的模板中进行表单自定义,请修改使用
标记并添加以下内容:
1 2 3 4 5 6 7 8 9
{%<跨度类="hljs-name">使用跨度>跨度>“form_div_layout.html。将field_label作为base_field_label %}跨度><跨度类="xml">{%<跨度类="hljs-name">块跨度>跨度>field_label %}跨度><跨度类="xml">{{<跨度类="hljs-name">块跨度><跨度类="hljs-params">(“base_field_label”)跨度>}}跨度><跨度类="xml">{%<跨度类="hljs-name">如果跨度>跨度>需要%}跨度><跨度类="xml"><<跨度类="hljs-name">跨度跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“要求”跨度><跨度类="hljs-attr">标题跨度>=<跨度类="hljs-string">“此字段为必填项”跨度>>跨度>*<跨度类="hljs-tag"><跨度类="hljs-name">跨度跨度>>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">endif跨度>跨度>%}跨度><跨度类="xml">{%<跨度类="hljs-name">endblock跨度>跨度>%}跨度>
在Twig中,如果你在一个单独的模板中进行表单定制,请使用以下方法:
1 2 3 4 5 6 7 8 9
{%<跨度类="hljs-name">扩展跨度>跨度>“form_div_layout.html。嫩枝' %}跨度><跨度类="xml">{%<跨度类="hljs-name">块跨度>跨度>field_label %}跨度><跨度类="xml">{{<跨度类="hljs-name">父跨度><跨度类="hljs-params">()跨度>}}跨度><跨度类="xml">{%<跨度类="hljs-name">如果跨度>跨度>需要%}跨度><跨度类="xml"><<跨度类="hljs-name">跨度跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“要求”跨度><跨度类="hljs-attr">标题跨度>=<跨度类="hljs-string">“此字段为必填项”跨度>>跨度>*<跨度类="hljs-tag"><跨度类="hljs-name">跨度跨度>>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">endif跨度>跨度>%}跨度><跨度类="xml">{%<跨度类="hljs-name">endblock跨度>跨度>%}跨度>
当使用PHP作为模板引擎时,你必须从原始模板复制内容:
1 2 3 4 5 6 7 8 9
<!--field_label.html.php -->跨度><跨度类="hljs-comment"><!--或iginal content -->跨度><跨度类="hljs-tag"><<跨度类="hljs-name">标签跨度><跨度类="hljs-attr">为跨度>=<跨度类="hljs-string">“< ?php回声$视图->逃避($id)? >"跨度><?<跨度类="hljs-attr">php跨度><跨度类="hljs-attr">foreach跨度>(美元)<跨度类="hljs-attr">attr跨度><跨度类="hljs-attr">作为跨度>$<跨度类="hljs-attr">k跨度>=>跨度>$v) {printf (' % s =“% s”,视图- >逃离美元($ k),视图- >逃离美元(v)美元);} ? > ><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度><跨度类="hljs-operator">->跨度>逃避(<跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“翻译”跨度>]<跨度类="hljs-operator">->跨度>反式(<跨度类="hljs-variable">$跨度>标签跨度>))<跨度类="hljs-meta">? >跨度>跨度><跨度类="hljs-tag"><跨度类="hljs-name">标签跨度>>跨度><跨度类="hljs-comment"><!--customization -->跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">如果跨度>(<跨度类="hljs-variable">$跨度>要求跨度>) :<跨度类="hljs-meta">? >跨度>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">跨度跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“要求”跨度><跨度类="hljs-attr">标题跨度>=<跨度类="hljs-string">“此字段为必填项”跨度>>跨度>*<跨度类="hljs-tag"><跨度类="hljs-name">跨度跨度>>跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">endif跨度><跨度类="hljs-meta">? >跨度>跨度>
提示跨度>
看到如何自定义表单渲染关于如何应用此定制。
使用
标记并添加以下内容:1 2 3 4 5 6 7 8 9
{%<跨度类="hljs-name">使用跨度>跨度>“form_div_layout.html。将field_label作为base_field_label %}跨度><跨度类="xml">{%<跨度类="hljs-name">块跨度>跨度>field_label %}跨度><跨度类="xml">{{<跨度类="hljs-name">块跨度><跨度类="hljs-params">(“base_field_label”)跨度>}}跨度><跨度类="xml">{%<跨度类="hljs-name">如果跨度>跨度>需要%}跨度><跨度类="xml"><<跨度类="hljs-name">跨度跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“要求”跨度><跨度类="hljs-attr">标题跨度>=<跨度类="hljs-string">“此字段为必填项”跨度>>跨度>*<跨度类="hljs-tag"><跨度类="hljs-name">跨度跨度>>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">endif跨度>跨度>%}跨度><跨度类="xml">{%<跨度类="hljs-name">endblock跨度>跨度>%}跨度>
1 2 3 4 5 6 7 8 9
{%<跨度类="hljs-name">扩展跨度>跨度>“form_div_layout.html。嫩枝' %}跨度><跨度类="xml">{%<跨度类="hljs-name">块跨度>跨度>field_label %}跨度><跨度类="xml">{{<跨度类="hljs-name">父跨度><跨度类="hljs-params">()跨度>}}跨度><跨度类="xml">{%<跨度类="hljs-name">如果跨度>跨度>需要%}跨度><跨度类="xml"><<跨度类="hljs-name">跨度跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“要求”跨度><跨度类="hljs-attr">标题跨度>=<跨度类="hljs-string">“此字段为必填项”跨度>>跨度>*<跨度类="hljs-tag"><跨度类="hljs-name">跨度跨度>>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">endif跨度>跨度>%}跨度><跨度类="xml">{%<跨度类="hljs-name">endblock跨度>跨度>%}跨度>
1 2 3 4 5 6 7 8 9
<!--field_label.html.php -->跨度><跨度类="hljs-comment"><!--或iginal content -->跨度><跨度类="hljs-tag"><<跨度类="hljs-name">标签跨度><跨度类="hljs-attr">为跨度>=<跨度类="hljs-string">“< ?php回声$视图->逃避($id)? >"跨度><?<跨度类="hljs-attr">php跨度><跨度类="hljs-attr">foreach跨度>(美元)<跨度类="hljs-attr">attr跨度><跨度类="hljs-attr">作为跨度>$<跨度类="hljs-attr">k跨度>=>跨度>$v) {printf (' % s =“% s”,视图- >逃离美元($ k),视图- >逃离美元(v)美元);} ? > ><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度><跨度类="hljs-operator">->跨度>逃避(<跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“翻译”跨度>]<跨度类="hljs-operator">->跨度>反式(<跨度类="hljs-variable">$跨度>标签跨度>))<跨度类="hljs-meta">? >跨度>跨度><跨度类="hljs-tag"><跨度类="hljs-name">标签跨度>>跨度><跨度类="hljs-comment"><!--customization -->跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">如果跨度>(<跨度类="hljs-variable">$跨度>要求跨度>) :<跨度类="hljs-meta">? >跨度>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">跨度跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“要求”跨度><跨度类="hljs-attr">标题跨度>=<跨度类="hljs-string">“此字段为必填项”跨度>>跨度>*<跨度类="hljs-tag"><跨度类="hljs-name">跨度跨度>>跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">endif跨度><跨度类="hljs-meta">? >跨度>跨度>
提示跨度>
看到如何自定义表单渲染关于如何应用此定制。
使用标记并添加以下内容:
1 2 3 4 5 6 7 8 9
{%<跨度类="hljs-name">使用跨度>跨度>“form_div_layout.html。将field_widget作为base_field_widget %}跨度><跨度类="xml">{%<跨度类="hljs-name">块跨度>跨度>field_widget %}跨度><跨度类="xml">{{<跨度类="hljs-name">块跨度><跨度类="hljs-params">(“base_field_widget”)跨度>}}跨度><跨度类="xml">{%<跨度类="hljs-name">如果跨度>跨度>帮助被定义为%}跨度><跨度类="xml"><<跨度类="hljs-name">跨度跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“帮助”跨度>>跨度>跨度><跨度类="hljs-template-variable">{{help}}跨度><跨度类="xml"><跨度类="hljs-name">跨度跨度>>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">endif跨度>跨度>%}跨度><跨度类="xml">{%<跨度类="hljs-name">endblock跨度>跨度>%}跨度>
在twig中,如果你在一个单独的模板中进行表单定制,请使用以下方法:
1 2 3 4 5 6 7 8 9
{%<跨度类="hljs-name">扩展跨度>跨度>“form_div_layout.html。嫩枝' %}跨度><跨度类="xml">{%<跨度类="hljs-name">块跨度>跨度>field_widget %}跨度><跨度类="xml">{{<跨度类="hljs-name">父跨度><跨度类="hljs-params">()跨度>}}跨度><跨度类="xml">{%<跨度类="hljs-name">如果跨度>跨度>帮助被定义为%}跨度><跨度类="xml"><<跨度类="hljs-name">跨度跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“帮助”跨度>>跨度>跨度><跨度类="hljs-template-variable">{{help}}跨度><跨度类="xml"><跨度类="hljs-name">跨度跨度>>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">endif跨度>跨度>%}跨度><跨度类="xml">{%<跨度类="hljs-name">endblock跨度>跨度>%}跨度>
当使用PHP作为模板引擎时,你必须从原始模板复制内容:
12 3 4 5 6 7 8 9 10 11 12 13
<!--field_widget.html.php -->跨度><跨度类="hljs-comment"><!--Original content -->跨度><跨度类="hljs-tag"><<跨度类="hljs-name">输入跨度><跨度类="hljs-attr">类型跨度>=<跨度类="hljs-string">“< ?php回声收取(美元)类型) ?$view->转义($type): "跨度><跨度类="hljs-attr">文本跨度>”? >跨度>“价值= "<跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度><跨度类="hljs-operator">->跨度>逃避(<跨度类="hljs-variable">$跨度>价值跨度>)<跨度类="hljs-meta">? >跨度>跨度>"<跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>renderBlock (<跨度类="hljs-string">“属性”跨度>)<跨度类="hljs-meta">? >跨度>跨度>/><跨度类="hljs-comment"><!--Customization -->跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">如果跨度>(<跨度类="hljs-keyword">收取跨度>(<跨度类="hljs-variable">$跨度>帮助跨度>)):<跨度类="hljs-meta">? >跨度>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">跨度跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“帮助”跨度>>跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度><跨度类="hljs-operator">->跨度>逃避(<跨度类="hljs-variable">$跨度>帮助跨度>)<跨度类="hljs-meta">? >跨度>跨度><跨度类="hljs-tag"><跨度类="hljs-name">跨度跨度>>跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">endif跨度><跨度类="hljs-meta">? >跨度>跨度>
若要在字段下方呈现帮助消息,可传入帮助
变量:
- 嫩枝跨度>李><李data-language="php">PHP跨度>李>
1
{{form_widget(形式。标题,{'help': 'foobar'}) }}跨度>
1
<?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>小部件(<跨度类="hljs-variable">$跨度>形式跨度>[<跨度类="hljs-string">“标题”跨度>),<跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“帮助”跨度>=><跨度类="hljs-string">“foobar”跨度>))<跨度类="hljs-meta">? >跨度>
提示跨度>
看到如何自定义表单渲染关于如何应用此定制。
1 2 3 4 5 6 7 8 9
{%<跨度类="hljs-name">使用跨度>跨度>“form_div_layout.html。将field_widget作为base_field_widget %}跨度><跨度类="xml">{%<跨度类="hljs-name">块跨度>跨度>field_widget %}跨度><跨度类="xml">{{<跨度类="hljs-name">块跨度><跨度类="hljs-params">(“base_field_widget”)跨度>}}跨度><跨度类="xml">{%<跨度类="hljs-name">如果跨度>跨度>帮助被定义为%}跨度><跨度类="xml"><<跨度类="hljs-name">跨度跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“帮助”跨度>>跨度>跨度><跨度类="hljs-template-variable">{{help}}跨度><跨度类="xml"><跨度类="hljs-name">跨度跨度>>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">endif跨度>跨度>%}跨度><跨度类="xml">{%<跨度类="hljs-name">endblock跨度>跨度>%}跨度>
1 2 3 4 5 6 7 8 9
{%<跨度类="hljs-name">扩展跨度>跨度>“form_div_layout.html。嫩枝' %}跨度><跨度类="xml">{%<跨度类="hljs-name">块跨度>跨度>field_widget %}跨度><跨度类="xml">{{<跨度类="hljs-name">父跨度><跨度类="hljs-params">()跨度>}}跨度><跨度类="xml">{%<跨度类="hljs-name">如果跨度>跨度>帮助被定义为%}跨度><跨度类="xml"><<跨度类="hljs-name">跨度跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“帮助”跨度>>跨度>跨度><跨度类="hljs-template-variable">{{help}}跨度><跨度类="xml"><跨度类="hljs-name">跨度跨度>>跨度>跨度><跨度类="hljs-template-tag">{%<跨度类="hljs-name">endif跨度>跨度>%}跨度><跨度类="xml">{%<跨度类="hljs-name">endblock跨度>跨度>%}跨度>
12 3 4 5 6 7 8 9 10 11 12 13
<!--field_widget.html.php -->跨度><跨度类="hljs-comment"><!--Original content -->跨度><跨度类="hljs-tag"><<跨度类="hljs-name">输入跨度><跨度类="hljs-attr">类型跨度>=<跨度类="hljs-string">“< ?php回声收取(美元)类型) ?$view->转义($type): "跨度><跨度类="hljs-attr">文本跨度>”? >跨度>“价值= "<跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度><跨度类="hljs-operator">->跨度>逃避(<跨度类="hljs-variable">$跨度>价值跨度>)<跨度类="hljs-meta">? >跨度>跨度>"<跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>renderBlock (<跨度类="hljs-string">“属性”跨度>)<跨度类="hljs-meta">? >跨度>跨度>/><跨度类="hljs-comment"><!--Customization -->跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">如果跨度>(<跨度类="hljs-keyword">收取跨度>(<跨度类="hljs-variable">$跨度>帮助跨度>)):<跨度类="hljs-meta">? >跨度>跨度><跨度类="hljs-tag"><<跨度类="hljs-name">跨度跨度><跨度类="hljs-attr">类跨度>=<跨度类="hljs-string">“帮助”跨度>>跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度><跨度类="hljs-operator">->跨度>逃避(<跨度类="hljs-variable">$跨度>帮助跨度>)<跨度类="hljs-meta">? >跨度>跨度><跨度类="hljs-tag"><跨度类="hljs-name">跨度跨度>>跨度><跨度类="php"><跨度类="hljs-meta"><?php跨度><跨度类="hljs-keyword">endif跨度><跨度类="hljs-meta">? >跨度>跨度>
帮助
变量:- 嫩枝跨度>李><李data-language="php">PHP跨度>李>
1
{{form_widget(形式。标题,{'help': 'foobar'}) }}跨度>
1
<?php跨度><跨度类="hljs-keyword">回声跨度><跨度类="hljs-variable">$跨度>视图跨度>[<跨度类="hljs-string">“形式”跨度>]<跨度类="hljs-operator">->跨度>小部件(<跨度类="hljs-variable">$跨度>形式跨度>[<跨度类="hljs-string">“标题”跨度>),<跨度类="hljs-keyword">数组跨度>(<跨度类="hljs-string">“帮助”跨度>=><跨度类="hljs-string">“foobar”跨度>))<跨度类="hljs-meta">? >跨度>
提示跨度>
看到如何自定义表单渲染关于如何应用此定制。
作为第二个参数传递的数组包含表单“variables”。有关Twig中这个概念的详细信息,请参见树枝模板表单函数和变量引用.