跳到内容

Bootstrap 4 表单主题

编辑此页

Symfony 提供了几种将 Bootstrap 集成到您的应用程序中的方法。最直接的方法是在您的模板中添加所需的 <link><script> 元素(通常您只将它们包含在其他模板从中扩展的主布局模板中)

1
2
3
4
5
6
7
8
9
{# templates/base.html.twig #}

{# beware that the blocks in your template may be named different #}
{% block head_css %}
    <!-- Copy CSS from https://bootstrap.ac.cn/docs/4.4/getting-started/introduction/#css -->
{% endblock %}
{% block head_js %}
    <!-- Copy JavaScript from https://bootstrap.ac.cn/docs/4.4/getting-started/introduction/#js -->
{% endblock %}

如果您的应用程序使用现代前端实践,则最好使用 Webpack Encore 并按照本教程将 Bootstrap 的源代码导入到您的 SCSS 和 JavaScript 文件中。

下一步是配置 Symfony 应用程序在渲染表单时使用 Bootstrap 4 样式。如果您想将它们应用于所有表单,请定义此配置

1
2
3
# config/packages/twig.yaml
twig:
    form_themes: ['bootstrap_4_layout.html.twig']

如果您希望在表单的基础上应用 Bootstrap 样式,请在使用这些表单的模板中包含 form_theme 标签

1
2
3
4
5
6
7
8
{# ... #}
{# this tag only applies to the forms defined in this template #}
{% form_theme form 'bootstrap_4_layout.html.twig' %}

{% block body %}
    <h1>User Sign Up:</h1>
    {{ form(form) }}
{% endblock %}

错误消息

表单错误呈现在 内部 <label> 元素,以确保错误及其 <input> 之间有很强的关联,这是 WCAG 2.0 标准要求的。为了实现这一点,form_errors() 在内部由 form_label() 调用。如果您在模板中调用 form_errors(),您将获得两次显示的错误消息。

提示

由于表单错误呈现在 <label> 内部,因此您不能使用 CSS :after 将星号附加到标签,因为它会在错误消息之后显示。请改用 labellabel_html 选项。

复选框和单选按钮

对于复选框/单选按钮字段,调用 form_label() 不会呈现任何内容。由于 Bootstrap 内部机制,标签已由 form_widget() 呈现。

文件输入

文件输入使用 Bootstrap "custom-file" 类呈现,这会隐藏所选文件的名称。为了解决这个问题,请使用 bs-custom-file-input JavaScript 插件,如 Bootstrap Forms 文档推荐的那样。

可访问性

Bootstrap 4 框架在使其可访问性方面做得很好,适用于功能性差异,如视力障碍和认知能力。Symfony 更进一步,确保表单主题符合 WCAG 2.0 标准

这并不意味着您的整个网站自动符合完整标准,但这确实意味着您在为所有用户创建设计方面取得了很大进展。

自定义表单

Bootstrap 4 有一个名为 "`custom forms`_" 的功能。您可以通过向标签添加一些类在 Symfony Form RadioTypeCheckboxType 上启用它

1
2
3
{{ form_row(form.myRadio, {label_attr: {class: 'radio-custom'} }) }}
{{ form_row(form.myCheckbox, {label_attr: {class: 'checkbox-custom'} }) }}
{{ form_row(form.myCheckbox, {label_attr: {class: 'switch-custom'} }) }}
这项工作,包括代码示例,根据 Creative Commons BY-SA 3.0 许可协议获得许可。
目录
    版本