diff --git a/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig b/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig
index 211eee5dd784..2df6a8f1724f 100644
--- a/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig
+++ b/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig
@@ -1,24 +1,19 @@
{# Widgets #}
-{% block form_widget %}
-{% spaceless %}
+{% block form_widget -%}
{% if compound %}
- {{ block('form_widget_compound') }}
+ {{- block('form_widget_compound') -}}
{% else %}
- {{ block('form_widget_simple') }}
+ {{- block('form_widget_simple') -}}
{% endif %}
-{% endspaceless %}
-{% endblock form_widget %}
+{%- endblock form_widget %}
-{% block form_widget_simple %}
-{% spaceless %}
- {% set type = type|default('text') %}
+{% block form_widget_simple -%}
+ {% set type = type|default('text') -%}
-{% endspaceless %}
-{% endblock form_widget_simple %}
+{%- endblock form_widget_simple %}
-{% block form_widget_compound %}
-{% spaceless %}
+{% block form_widget_compound -%}
{% if form.parent is empty %}
{{ form_errors(form) }}
@@ -26,48 +21,38 @@
{{ block('form_rows') }}
{{ form_rest(form) }}
-{% endspaceless %}
-{% endblock form_widget_compound %}
+{%- endblock form_widget_compound %}
-{% block collection_widget %}
-{% spaceless %}
- {% if prototype is defined %}
+{% block collection_widget -%}
+ {% if prototype is defined -%}
{% set attr = attr|merge({'data-prototype': form_row(prototype) }) %}
- {% endif %}
- {{ block('form_widget') }}
-{% endspaceless %}
-{% endblock collection_widget %}
+ {%- endif %}
+ {{- block('form_widget') -}}
+{%- endblock collection_widget %}
-{% block textarea_widget %}
-{% spaceless %}
+{% block textarea_widget -%}
-{% endspaceless %}
-{% endblock textarea_widget %}
+{%- endblock textarea_widget %}
-{% block choice_widget %}
-{% spaceless %}
+{% block choice_widget -%}
{% if expanded %}
- {{ block('choice_widget_expanded') }}
+ {{- block('choice_widget_expanded') -}}
{% else %}
- {{ block('choice_widget_collapsed') }}
+ {{- block('choice_widget_collapsed') -}}
{% endif %}
-{% endspaceless %}
-{% endblock choice_widget %}
+{%- endblock choice_widget %}
-{% block choice_widget_expanded %}
-{% spaceless %}
+{% block choice_widget_expanded -%}
- {% for child in form %}
- {{ form_widget(child) }}
- {{ form_label(child) }}
- {% endfor %}
+ {%- for child in form %}
+ {{- form_widget(child) -}}
+ {{- form_label(child) -}}
+ {% endfor -%}
-{% endspaceless %}
{% endblock choice_widget_expanded %}
-{% block choice_widget_collapsed %}
-{% spaceless %}
- {% if required and empty_value is none and not empty_value_in_choices and not multiple %}
+{% block choice_widget_collapsed -%}
+ {% if required and empty_value is none and not empty_value_in_choices and not multiple -%}
{% set required = false %}
{% endif %}
@@ -84,11 +69,9 @@
{% set options = choices %}
{{ block('choice_widget_options') }}
-{% endspaceless %}
-{% endblock choice_widget_collapsed %}
+{%- endblock choice_widget_collapsed %}
-{% block choice_widget_options %}
-{% spaceless %}
+{% block choice_widget_options -%}
{% for group_label, choice in options %}
{% if choice is iterable %}
@@ -99,25 +82,19 @@
{{ choice.label|trans({}, translation_domain) }}
{% endif %}
{% endfor %}
-{% endspaceless %}
-{% endblock choice_widget_options %}
+{%- endblock choice_widget_options %}
-{% block checkbox_widget %}
-{% spaceless %}
+{% block checkbox_widget -%}
-{% endspaceless %}
-{% endblock checkbox_widget %}
+{%- endblock checkbox_widget %}
-{% block radio_widget %}
-{% spaceless %}
+{% block radio_widget -%}
-{% endspaceless %}
-{% endblock radio_widget %}
+{%- endblock radio_widget %}
-{% block datetime_widget %}
-{% spaceless %}
+{% block datetime_widget -%}
{% if widget == 'single_text' %}
- {{ block('form_widget_simple') }}
+ {{- block('form_widget_simple') -}}
{% else %}
{{ form_errors(form.date) }}
@@ -126,14 +103,12 @@
{{ form_widget(form.time) }}
{% endif %}
-{% endspaceless %}
-{% endblock datetime_widget %}
+{%- endblock datetime_widget %}
-{% block date_widget %}
-{% spaceless %}
+{% block date_widget -%}
{% if widget == 'single_text' %}
- {{ block('form_widget_simple') }}
- {% else %}
+ {{- block('form_widget_simple') -}}
+ {% else -%}
{{ date_pattern|replace({
'{{ year }}': form_widget(form.year),
@@ -141,238 +116,188 @@
'{{ day }}': form_widget(form.day),
})|raw }}
- {% endif %}
-{% endspaceless %}
-{% endblock date_widget %}
+ {%- endif %}
+{%- endblock date_widget %}
-{% block time_widget %}
-{% spaceless %}
+{% block time_widget -%}
{% if widget == 'single_text' %}
- {{ block('form_widget_simple') }}
- {% else %}
+ {{- block('form_widget_simple') -}}
+ {% else -%}
{% set vars = widget == 'text' ? { 'attr': { 'size': 1 }} : {} %}
{{ form_widget(form.hour, vars) }}{% if with_minutes %}:{{ form_widget(form.minute, vars) }}{% endif %}{% if with_seconds %}:{{ form_widget(form.second, vars) }}{% endif %}
- {% endif %}
-{% endspaceless %}
-{% endblock time_widget %}
+ {%- endif %}
+{%- endblock time_widget %}
-{% block number_widget %}
-{% spaceless %}
+{% block number_widget -%}
{# type="number" doesn't work with floats #}
{% set type = type|default('text') %}
- {{ block('form_widget_simple') }}
-{% endspaceless %}
-{% endblock number_widget %}
+ {{- block('form_widget_simple') -}}
+{%- endblock number_widget %}
-{% block integer_widget %}
-{% spaceless %}
+{% block integer_widget -%}
{% set type = type|default('number') %}
- {{ block('form_widget_simple') }}
-{% endspaceless %}
-{% endblock integer_widget %}
+ {{- block('form_widget_simple') -}}
+{%- endblock integer_widget %}
-{% block money_widget %}
-{% spaceless %}
+{% block money_widget -%}
{{ money_pattern|replace({ '{{ widget }}': block('form_widget_simple') })|raw }}
-{% endspaceless %}
-{% endblock money_widget %}
+{%- endblock money_widget %}
-{% block url_widget %}
-{% spaceless %}
+{% block url_widget -%}
{% set type = type|default('url') %}
- {{ block('form_widget_simple') }}
-{% endspaceless %}
-{% endblock url_widget %}
+ {{- block('form_widget_simple') -}}
+{%- endblock url_widget %}
-{% block search_widget %}
-{% spaceless %}
+{% block search_widget -%}
{% set type = type|default('search') %}
- {{ block('form_widget_simple') }}
-{% endspaceless %}
-{% endblock search_widget %}
+ {{- block('form_widget_simple') -}}
+{%- endblock search_widget %}
-{% block percent_widget %}
-{% spaceless %}
+{% block percent_widget -%}
{% set type = type|default('text') %}
- {{ block('form_widget_simple') }} %
-{% endspaceless %}
-{% endblock percent_widget %}
+ {{- block('form_widget_simple') -}} %
+{%- endblock percent_widget %}
-{% block password_widget %}
-{% spaceless %}
+{% block password_widget -%}
{% set type = type|default('password') %}
{{ block('form_widget_simple') }}
-{% endspaceless %}
-{% endblock password_widget %}
+{%- endblock password_widget %}
-{% block hidden_widget %}
-{% spaceless %}
+{% block hidden_widget -%}
{% set type = type|default('hidden') %}
- {{ block('form_widget_simple') }}
-{% endspaceless %}
-{% endblock hidden_widget %}
+ {{- block('form_widget_simple') -}}
+{%- endblock hidden_widget -%}
-{% block email_widget %}
-{% spaceless %}
+{% block email_widget -%}
{% set type = type|default('email') %}
- {{ block('form_widget_simple') }}
-{% endspaceless %}
-{% endblock email_widget %}
+ {{- block('form_widget_simple') -}}
+{%- endblock email_widget %}
-{% block button_widget %}
-{% spaceless %}
- {% if label is empty %}
+{% block button_widget -%}
+ {% if label is empty -%}
{% set label = name|humanize %}
- {% endif %}
+ {%- endif -%}
{{ label|trans({}, translation_domain) }}
-{% endspaceless %}
-{% endblock button_widget %}
+{%- endblock button_widget %}
-{% block submit_widget %}
-{% spaceless %}
+{% block submit_widget -%}
{% set type = type|default('submit') %}
- {{ block('button_widget') }}
-{% endspaceless %}
-{% endblock submit_widget %}
+ {{- block('button_widget') -}}
+{%- endblock submit_widget %}
-{% block reset_widget %}
-{% spaceless %}
+{% block reset_widget -%}
{% set type = type|default('reset') %}
- {{ block('button_widget') }}
-{% endspaceless %}
-{% endblock reset_widget %}
+ {{- block('button_widget') -}}
+{%- endblock reset_widget %}
{# Labels #}
-{% block form_label %}
-{% spaceless %}
- {% if label is not sameas(false) %}
- {% if not compound %}
+{% block form_label -%}
+ {% if label is not sameas(false) -%}
+ {% if not compound -%}
{% set label_attr = label_attr|merge({'for': id}) %}
- {% endif %}
- {% if required %}
+ {%- endif %}
+ {% if required -%}
{% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required')|trim}) %}
- {% endif %}
- {% if label is empty %}
+ {%- endif %}
+ {% if label is empty -%}
{% set label = name|humanize %}
- {% endif %}
+ {%- endif -%}
{{ label|trans({}, translation_domain) }}
- {% endif %}
-{% endspaceless %}
-{% endblock form_label %}
+ {%- endif %}
+{%- endblock form_label %}
{% block button_label %}{% endblock %}
{# Rows #}
-{% block repeated_row %}
-{% spaceless %}
+{% block repeated_row -%}
{#
No need to render the errors here, as all errors are mapped
to the first child (see RepeatedTypeValidatorExtension).
#}
- {{ block('form_rows') }}
-{% endspaceless %}
-{% endblock repeated_row %}
+ {{- block('form_rows') -}}
+{%- endblock repeated_row %}
-{% block form_row %}
-{% spaceless %}
+{% block form_row -%}
{{ form_label(form) }}
{{ form_errors(form) }}
{{ form_widget(form) }}
-{% endspaceless %}
-{% endblock form_row %}
+{%- endblock form_row %}
-{% block button_row %}
-{% spaceless %}
+{% block button_row -%}
{{ form_widget(form) }}
-{% endspaceless %}
-{% endblock button_row %}
+{%- endblock button_row %}
-{% block hidden_row %}
+{% block hidden_row -%}
{{ form_widget(form) }}
-{% endblock hidden_row %}
+{%- endblock hidden_row %}
{# Misc #}
-{% block form %}
-{% spaceless %}
+{% block form -%}
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
-{% endspaceless %}
-{% endblock form %}
+{%- endblock form %}
-{% block form_start %}
-{% spaceless %}
+{% block form_start -%}
{% set method = method|upper %}
- {% if method in ["GET", "POST"] %}
+ {%- if method in ["GET", "POST"] -%}
{% set form_method = method %}
- {% else %}
+ {%- else -%}
{% set form_method = "POST" %}
- {% endif %}
+ {%- endif -%}
-{% endspaceless %}
-{% endblock form_end %}
+{%- endblock form_end %}
-{% block form_enctype %}
-{% spaceless %}
+{% block form_enctype -%}
{% if multipart %}enctype="multipart/form-data"{% endif %}
-{% endspaceless %}
-{% endblock form_enctype %}
+{%- endblock form_enctype %}
-{% block form_errors %}
-{% spaceless %}
- {% if errors|length > 0 %}
+{% block form_errors -%}
+ {% if errors|length > 0 -%}
- {% for error in errors %}
+ {%- for error in errors -%}
{{ error.message }}
- {% endfor %}
+ {%- endfor -%}
- {% endif %}
-{% endspaceless %}
-{% endblock form_errors %}
+ {%- endif %}
+{%- endblock form_errors %}
-{% block form_rest %}
-{% spaceless %}
- {% for child in form %}
+{% block form_rest -%}
+ {% for child in form -%}
{% if not child.rendered %}
- {{ form_row(child) }}
+ {{- form_row(child) -}}
{% endif %}
- {% endfor %}
-{% endspaceless %}
+ {%- endfor %}
{% endblock form_rest %}
{# Support #}
-{% block form_rows %}
-{% spaceless %}
+{% block form_rows -%}
{% for child in form %}
- {{ form_row(child) }}
+ {{- form_row(child) -}}
{% endfor %}
-{% endspaceless %}
-{% endblock form_rows %}
+{%- endblock form_rows %}
-{% block widget_attributes %}
-{% spaceless %}
+{% block widget_attributes -%}
id="{{ id }}" name="{{ full_name }}"
{%- if read_only %} readonly="readonly"{% endif -%}
{%- if disabled %} disabled="disabled"{% endif -%}
@@ -387,11 +312,9 @@
{{- attrname }}="{{ attrvalue }}"
{%- endif -%}
{%- endfor -%}
-{% endspaceless %}
-{% endblock widget_attributes %}
+{%- endblock widget_attributes %}
-{% block widget_container_attributes %}
-{% spaceless %}
+{% block widget_container_attributes -%}
{%- if id is not empty %}id="{{ id }}"{% endif -%}
{%- for attrname, attrvalue in attr -%}
{{- " " -}}
@@ -403,11 +326,9 @@
{{- attrname }}="{{ attrvalue }}"
{%- endif -%}
{%- endfor -%}
-{% endspaceless %}
-{% endblock widget_container_attributes %}
+{%- endblock widget_container_attributes %}
-{% block button_attributes %}
-{% spaceless %}
+{% block button_attributes -%}
id="{{ id }}" name="{{ full_name }}"{% if disabled %} disabled="disabled"{% endif -%}
{%- for attrname, attrvalue in attr -%}
{{- " " -}}
@@ -419,5 +340,4 @@
{{- attrname }}="{{ attrvalue }}"
{%- endif -%}
{%- endfor -%}
-{% endspaceless %}
-{% endblock button_attributes %}
+{%- endblock button_attributes %}
diff --git a/src/Symfony/Bridge/Twig/Resources/views/Form/form_table_layout.html.twig b/src/Symfony/Bridge/Twig/Resources/views/Form/form_table_layout.html.twig
index aed4f8d77042..5c85128f5a12 100644
--- a/src/Symfony/Bridge/Twig/Resources/views/Form/form_table_layout.html.twig
+++ b/src/Symfony/Bridge/Twig/Resources/views/Form/form_table_layout.html.twig
@@ -1,52 +1,44 @@
{% use "form_div_layout.html.twig" %}
-{% block form_row %}
-{% spaceless %}
+{% block form_row -%}
- {{ form_label(form) }}
+ {{- form_label(form) -}}
- {{ form_errors(form) }}
- {{ form_widget(form) }}
+ {{- form_errors(form) -}}
+ {{- form_widget(form) -}}
-{% endspaceless %}
-{% endblock form_row %}
+{%- endblock form_row %}
-{% block button_row %}
-{% spaceless %}
+{% block button_row -%}
- {{ form_widget(form) }}
+ {{- form_widget(form) -}}
-{% endspaceless %}
{% endblock button_row %}
-{% block hidden_row %}
-{% spaceless %}
+{% block hidden_row -%}
- {{ form_widget(form) }}
+ {{- form_widget(form) -}}
-{% endspaceless %}
{% endblock hidden_row %}
-{% block form_widget_compound %}
-{% spaceless %}
+{% block form_widget_compound -%}
- {% if form.parent is empty and errors|length > 0 %}
+ {%- if form.parent is empty and errors|length > 0 -%}
- {{ form_errors(form) }}
+ {{- form_errors(form) -}}
- {% endif %}
- {{ block('form_rows') }}
- {{ form_rest(form) }}
+ {%- endif %}
+ {{- block('form_rows') -}}
+ {{- form_rest(form) -}}
-{% endspaceless %}
-{% endblock form_widget_compound %}
+{%- endblock form_widget_compound %}
diff --git a/src/Symfony/Component/Form/Tests/AbstractDivLayoutTest.php b/src/Symfony/Component/Form/Tests/AbstractDivLayoutTest.php
index 2d32aa38a398..fd58443709ab 100644
--- a/src/Symfony/Component/Form/Tests/AbstractDivLayoutTest.php
+++ b/src/Symfony/Component/Form/Tests/AbstractDivLayoutTest.php
@@ -756,16 +756,4 @@ public function testWidgetContainerAttributeNameRepeatedIfTrue()
// foo="foo"
$this->assertContains('