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.dev.org.tw/docs/4.4/getting-started/introduction/#css -->
{% endblock %}
{% block head_js %}
<!-- Copy JavaScript from https://bootstrap.dev.org.tw/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 表單文件 所建議。
無障礙功能
Bootstrap 4 框架在使其適用於功能性變化 (例如視力障礙和認知能力) 方面做得很好。Symfony 更進一步確保表單主題符合 WCAG 2.0 標準。
這並不表示您的整個網站會自動符合完整標準,但這表示您在為 **所有** 使用者建立設計方面已取得長足的進展。
自訂表單
Bootstrap 4 有一個稱為「「自訂表單」」的功能。您可以透過將一些類別新增至標籤,在您的 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'} }) }}