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
将星号附加到标签,因为它会在错误消息之后显示。请改用 label 或 label_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 RadioType
和 CheckboxType
上启用它
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'} }) }}