如何处理形式的主题

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

如何处理形式的主题

的每一部分如何定制的形式呈现。你可以自由地改变每个形式呈现“行”,如何改变标记用于呈现错误,甚至定制如何文本区域标签应该呈现。没有限制,可以用在不同的地方和不同的定制。

ob娱乐下载Symfony使用模板来呈现每一种形式的一部分,等标签标签,输入标签,和其他所有错误消息。

在小枝,每个表单“片段”是由一块树枝。定制任何部分的形式呈现,你只需要覆盖适当的块。

在PHP中,每个表单呈现“片段”通过一个单独的模板文件。定制任何部分的形式呈现,你只需要覆盖现有的模板通过创建一个新的。

要理解这是如何工作的,定制的form_row片段和添加一个类属性div元素周围每一行。为此,创建一个新模板文件存储新的标记:

1 2 3 4 5 6 7 8 9 10
{# app /资源/视图/形式/ fields.html。树枝#}{%form_row %}{%没有余地的%}<div=“form_row”>{{了form_label(形式)}}{{form_errors(形式)}}{{form_widget(形式)}}< /div>{%endspaceless%}{%endblockform_row %}

form_row表单片段是大多数字段通过渲染时使用form_row ()函数。告诉组件使用你的新形式form_row片段上面定义,添加以下的呈现形式的模板:

1 2 3 4 5 6 7
{# app /资源/视图/ / new.html违约。树枝#}{%form_theme表单的表单/ fields.html。嫩枝' %}{#或如果你想使用多个主题#}{%form_theme表单的表单/ fields.html。/ fields2.html树枝的形式。嫩枝' %}{#……呈现形式#}

form_theme标签(嫩枝)“进口”定义的碎片在给定的模板,并使用它们在呈现表单。换句话说,当form_row ()在这个模板函数被调用后,它将使用form_row从自定义主题块(而不是默认的form_row附带Symfony的块)。ob娱乐下载

自定义主题没有覆盖所有的块。在呈现一块不覆盖在您的自定义主题,主题引擎将回落到全球的主题(在包级别上定义)。

如果提供了一些自定义主题,他们将在列出的顺序搜索之前回落全球主题。

定制表单的任何部分,你只需要覆盖适当的片段。知道哪些块或文件覆盖下一节的主题。

更广泛的讨论,请参阅如何自定义形式呈现

表单片段命名

在Syob娱乐下载mfony中,每一部分的形式呈现,HTML表单元素,错误,标签,等等——中定义一个基本主题,这是一组块在树枝和PHP模板文件的集合。

在小枝,每一块需要被定义在一个模板文件(如form_div_layout.html.twig),生活在树枝桥。在这个文件中,您可以看到每一块需要呈现形式和每一个默认字段类型。

在PHP中,单个模板文件碎片。默认情况下,它们位于资源/视图/形式FrameworkBundle目录(GitHub观)。

每个片段名称遵循相同的基本模式分为两部分,由一个下划线字符(_)。几个例子:

  • form_row——使用form_row ()呈现大多数字段;
  • textarea_widget——使用form_widget ()呈现一个文本区域字段类型;
  • form_errors——使用form_errors ()为一个字段来呈现错误;

每一个片段都遵循相同的基本模式:type_part。的类型部分对应的字段类型(如被呈现。文本区域,复选框,日期等)而部分部分对应于什么(如被呈现。标签,小部件,错误等等)。默认情况下,可能有4部分可呈现的形式:

标签 (如。了form_label ()) 显示字段的标签
小部件 (如。form_widget ()) 显示字段的HTML表示
错误 (如。form_errors ()) 显示字段的错误
(如。form_row ()) 渲染领域的整个行(标签、小部件和错误)

请注意

实际上有2部分- - - - - -休息——但是你应该几乎从不需要担心覆盖它们。

通过了解字段类型(例如文本区域),哪个部分你想定制(如。小部件),您可以构建片段的名称需要覆盖(如。textarea_widget)。

模板片段继承

在某些情况下,您想要定制的片段将似乎失踪。例如,没有textarea_errors在Symfony提供的默认主题片段。ob娱乐下载那是一个错误文本区域场呈现?

答案是:通过form_errors片段。当Symfob娱乐下载ony渲染的错误文本区域类型,它看起来第一的textarea_errors片段之前回下降form_errors片段。每个字段类型都有类型(父类型的文本区域文本,它的父形式),Symfoob娱乐下载ny的片段使用父类型如果基本片段不存在。

因此,要覆盖的错误只有文本区域字段,复制form_errors片段,重命名它textarea_errors并定制它。覆盖默认的错误呈现所有字段,复制和自定义form_errors直接片段。

提示

“父”类型的每个字段类型是可用的表单类型引用每个字段类型。

全球形式主题

在上面的示例中,您使用了form_theme辅助(嫩枝)“进口”自定义表单片段只是这种形式。你也可以告诉Symfony导入表单定ob娱乐下载制你的整个项目。

嫩枝

自动包括定制的街区fields.html.twig模板创建的早些时候所有模板,修改应用程序配置文件:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
# app / config / config.yml枝:form_themes:- - - - - -“……”- - - - - -“形式/ fields.html.twig”#……

请注意

添加您的自定义主题的尽头form_themes因为每个主题覆盖所有前面的主题列表。

任何一块内fields.html.twig模板现在在全球范围内用于定义形式输出。

在树枝,还可以定制一个表单内块正确的模板定制需要的地方:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
{%扩展“base.html。嫩枝' %}{#进口“_self”为形式的主题#}{%form_theme形式_self %}{#让表单片段定制#}{%form_row %}{#自定义字段行输出#}{%endblockform_row %}{%内容%}{#……#}{{form_row (form.task)}}{%endblock%}

{% form_theme形式_self %}标记允许自定义表单模块直接在模板将使用这些定制。使用这个方法快速使形式输出定制,只需要在一个模板。

谨慎

{% form_theme形式_self %}功能将只有如果你的模板扩展另一个工作。如果你的模板不,你必须点form_theme到一个单独的模板。

PHP

从自动包括定制模板应用程序/资源/视图/形式目录之前创建所有模板,修改应用程序配置文件:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7
# app / config / config.yml框架:模板:形式:资源:- - - - - -“形式”#……

任何片段里应用程序/资源/视图/形式目录目前全球用于定义形式输出。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。
< /article>