{% use 'form_div_layout.html.twig' %} {# Widgets #} {%- block widget_attributes -%} {%- if not valid %} {% set attr = attr|merge({'class': (attr.class|default('') ~ ' is-invalid')|trim}) %} {% endif -%} {{ parent() }} {%- endblock widget_attributes -%} {% block form_widget_simple -%} {% if type is not defined or type not in ['hidden'] %} {%- set attr = attr|merge({'class': (attr.class|default('') ~ ' form-control')|trim}) -%} {% endif %} {{- parent() -}} {%- endblock form_widget_simple %} {% block textarea_widget -%} {% set attr = attr|merge({'class': (attr.class|default('') ~ ' form-control')|trim}) %} {{- parent() -}} {%- endblock textarea_widget %} {% block choice_widget_collapsed -%} {% set attr = attr|merge({'class': (attr.class|default('') ~ ' form-control')|trim}) %} {{- parent() -}} {%- endblock %} {% block choice_widget_expanded -%} {% set attr = attr|merge({'class': (attr.class|default('') ~ ' form-checkable-stacked')|trim}) %} {{- parent() -}} {%- endblock %} {% block checkbox_widget -%} {% set attr = attr|merge({'class': (attr.class|default('') ~ ' form-checkable-input')|trim}) %} {{- form_label(form, null, {'widget': parent()}) -}} {%- endblock checkbox_widget %} {% block radio_widget -%} {% set attr = attr|merge({'class': (attr.class|default('') ~ ' form-checkable-input')|trim}) %} {{- form_label(form, null, {'widget': parent()}) -}} {%- endblock radio_widget %} {% block button_widget -%} {%- set attr = attr|merge({'class': (attr.class|default('btn-secondary') ~ ' btn')|trim}) -%} {{- parent() -}} {%- endblock button_widget %} {% block submit_widget -%} {%- set attr = attr|merge({'class': (attr.class|default('btn-primary'))|trim}) -%} {{- parent() -}} {%- endblock submit_widget %} {# Labels #} {%- block form_label -%} {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' form-label')|trim}) %} {{- parent() -}} {%- endblock -%} {% block checkbox_label -%} {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' form-checkable-checkbox')|trim}) %} {{- block('checkable_label') -}} {%- endblock checkbox_label %} {% block radio_label -%} {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' form-checkable-radio')|trim}) %} {{- block('checkable_label') -}} {%- endblock radio_label %} {% block checkable_label %} {# Do not display the label if widget is not defined in order to prevent double label rendering #} {% if widget is defined %} {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' form-checkable')|trim}) %} {% if parent_label_class is defined %} {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' ' ~ parent_label_class)|trim}) %} {% endif %} {% if label is not same as(false) and label is empty %} {%- if label_format is not empty -%} {% set label = label_format|replace({'%name%': name, '%id%': id}) %} {%- else -%} {% set label = name|humanize %} {%- endif -%} {% endif %} {{- widget|raw }} {% if label is not same as(false) -%} {{ translation_domain is same as(false) ? label : label|trans({}, translation_domain) -}} {%- endif %} {% endif %} {% endblock checkable_label %} {# Rows #} {% block form_row -%} {%- set widget_attr = widget_attr|default({}) -%} {%- if help is not empty -%} {%- set widget_attr = widget_attr|merge({'aria-describedby': id ~ '_help'}) -%} {%- endif -%} {%- set row_attr = row_attr|default({}) -%} {%- set row_attr = row_attr|merge({'class': (row_attr.class|default('') ~ ' form-group')|trim}) -%} {%- if required -%} {%- set row_attr = row_attr|merge({'class': (row_attr.class|default('') ~ ' is-required')|trim}) -%} {%- endif -%} {{- form_label(form) -}} {{- form_widget(form, {'attr': widget_attr}) -}} {{- form_errors(form) -}} {{- form_help(form) -}} {%- endblock form_row %} {% block checkbox_row -%} {{- block('checkable_row') -}} {%- endblock checkbox_row %} {% block radio_row -%} {{- block('checkable_row') -}} {%- endblock radio_row %} {% block checkable_row -%} {%- set widget_attr = widget_attr|default({}) -%} {%- set row_attr = row_attr|default({}) -%} {%- set row_attr = row_attr|merge({'class': (row_attr.class|default('') ~ ' form-group')|trim}) -%} {%- if required -%} {%- set row_attr = row_attr|merge({'class': (row_attr.class|default('') ~ ' is-required')|trim}) -%} {%- endif -%} {{- form_widget(form, widget_attr) -}} {{- form_errors(form) -}} {%- endblock checkable_row %} {%- block button_row -%} {{- form_widget(form) -}} {%- endblock button_row -%} {# Errors #} {% block form_errors -%} {% if errors|length > 0 -%}
    {%- for error in errors -%}
  • {{ error.message }}
  • {%- endfor -%}
{%- endif %} {%- endblock form_errors %} {# Help #} {% block form_help -%} {%- if help is not empty -%} {%- set help_attr = help_attr|merge({'class': (help_attr.class|default('') ~ ' form-help')|trim}) -%} {%- set help_html = help_html|default(false) -%}
{%- if translation_domain is same as(false) -%} {%- if help_html is same as(false) -%} {{- help -}} {%- else -%} {{- help|raw -}} {%- endif -%} {%- else -%} {%- if help_html is same as(false) -%} {{- help|trans({}, translation_domain) -}} {%- else -%} {{- help|trans({}, translation_domain)|raw -}} {%- endif -%} {%- endif -%}
{%- endif -%} {%- endblock form_help %}