8000 [Form] [TwigBridge] Bootstrap layout whitespace control · symfony/symfony@e8b0678 · GitHub
[go: up one dir, main page]

Skip to content

Commit e8b0678

Browse files
mvarfabpot
authored andcommitted
[Form] [TwigBridge] Bootstrap layout whitespace control
1 parent 2559628 commit e8b0678

File tree

4 files changed

+2001
-63
lines changed

4 files changed

+2001
-63
lines changed

src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_3_layout.html.twig

Lines changed: 61 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
{% block form_widget_simple -%}
66
{% if type is not defined or 'file' != type %}
7-
{% set attr = attr|merge({class: (attr.class|default('') ~ ' form-control')|trim}) %}
7+
{%- set attr = attr|merge({class: (attr.class|default('') ~ ' form-control')|trim}) -%}
88
{% endif %}
99
{{- parent() -}}
1010
{%- endblock form_widget_simple %}
@@ -42,48 +42,48 @@
4242
{% block datetime_widget -%}
4343
{% if widget == 'single_text' %}
4444
{{- block('form_widget_simple') -}}
45-
{% else %}
46-
{% set attr = attr|merge({class: (attr.class|default('') ~ ' form-inline')|trim}) %}
45+
{% else -%}
46+
{% set attr = attr|merge({class: (attr.class|default('') ~ ' form-inline')|trim}) -%}
4747
<div {{ block('widget_container_attributes') }}>
48-
{{ form_errors(form.date) }}
49-
{{ form_errors(form.time) }}
50-
{{ form_widget(form.date, { datetime: true } ) }}&nbsp;
51-
{{ form_widget(form.time, { datetime: true } ) }}
48+
{{- form_errors(form.date) -}}
49+
{{- form_errors(form.time) -}}
50+
{{- form_widget(form.date, { datetime: true } ) -}}
51+
{{- form_widget(form.time, { datetime: true } ) -}}
5252
</div>
53-
{% endif %}
53+
{%- endif %}
5454
{%- endblock datetime_widget %}
5555

5656
{% block date_widget -%}
5757
{% if widget == 'single_text' %}
5858
{{- block('form_widget_simple') -}}
59-
{% else %}
60-
{% set attr = attr|merge({class: (attr.class|default('') ~ ' form-inline')|trim}) %}
61-
{% if datetime is not defined or not datetime %}
59+
{% else -%}
60+
{% set attr = attr|merge({class: (attr.class|default('') ~ ' form-inline')|trim}) -%}
61+
{% if datetime is not defined or not datetime -%}
6262
<div {{ block('widget_container_attributes') -}}>
63-
{% endif %}
64-
{{ date_pattern|replace({
63+
{%- endif %}
64+
{{- date_pattern|replace({
6565
'{{ year }}': form_widget(form.year),
6666
'{{ month }}': form_widget(form.month),
6767
'{{ day }}': form_widget(form.day),
68-
})|raw }}
69-
{% if datetime is not defined or not datetime %}
68+
})|raw -}}
69+
{% if datetime is not defined or not datetime -%}
7070
</div>
71-
{% endif %}
71+
{%- endif -%}
7272
{% endif %}
7373
{%- endblock date_widget %}
7474

7575
{% block time_widget -%}
7676
{% if widget == 'single_text' %}
7777
{{- block('form_widget_simple') -}}
78-
{% else %}
79-
{% set attr = attr|merge({class: (attr.class|default('') ~ ' form-inline')|trim}) %}
80-
{% if datetime is not defined or false == datetime %}
78+
{% else -%}
79+
{% set attr = attr|merge({class: (attr.class|default('') ~ ' form-inline')|trim}) -%}
80+
{% if datetime is not defined or false == datetime -%}
8181
<div {{ block('widget_container_attributes') -}}>
82-
{% endif %}
83-
{{ form_widget(form.hour) }}:{{ form_widget(form.minute) }}{% if with_seconds %}:{{ form_widget(form.second) }}{% endif %}
84-
{% if datetime is not defined or false == datetime %}
82+
{%- endif -%}
83+
{{- form_widget(form.hour) }}:{{ form_widget(form.minute) }}{% if with_seconds %}:{{ form_widget(form.second) }}{% endif %}
84+
{% if datetime is not defined or false == datetime -%}
8585
</div>
86-
{% endif %}
86+
{%- endif -%}
8787
{% endif %}
8888
{%- endblock time_widget %}
8989

@@ -93,57 +93,57 @@
9393
{%- endblock %}
9494

9595
{% block choice_widget_expanded -%}
96-
{% if '-inline' in label_attr.class|default('') %}
96+
{% if '-inline' in label_attr.class|default('') -%}
9797
<div class="control-group">
98-
{% for child in form %}
99-
{{ form_widget(child, {
98+
{%- for child in form %}
99+
{{- form_widget(child, {
100100
parent_label_class: label_attr.class|default(''),
101-
}) }}
102-
{% endfor %}
101+
}) -}}
102+
{% endfor -%}
103103
</div>
104-
{% else %}
104+
{%- else -%}
105105
<div {{ block('widget_container_attributes') }}>
106-
{% for child in form %}
107-
{{ form_widget(child, {
106+
{%- for child in form %}
107+
{{- form_widget(child, {
108108
parent_label_class: label_attr.class|default(''),
109-
}) }}
110-
{% endfor %}
109+
}) -}}
110+
{% endfor -%}
111111
</div>
112-
{% endif %}
112+
{%- endif %}
113113
{%- endblock choice_widget_expanded %}
114114

115115
{% block checkbox_widget -%}
116-
{% set parent_label_class = parent_label_class|default('') %}
116+
{% set parent_label_class = parent_label_class|default('') -%}
117117
{% if 'checkbox-inline' in parent_label_class %}
118-
{{ form_label(form, null, { widget: parent() }) }}
119-
{% else %}
118+
{{- form_label(form, null, { widget: parent() }) -}}
119+
{% else -%}
120120
<div class="checkbox">
121-
{{ form_label(form, null, { widget: parent() }) }}
121+
{{- form_label(form, null, { widget: parent() }) -}}
122122
</div>
123-
{% endif %}
123+
{%- endif %}
124124
{%- endblock checkbox_widget %}
125125

126126
{% block radio_widget -%}
127-
{% set parent_label_class = parent_label_class|default('') %}
127+
{%- set parent_label_class = parent_label_class|default('') -%}
128128
{% if 'radio-inline' in parent_label_class %}
129-
{{ form_label(form, null, { widget: parent() }) }}
130-
{% else %}
129+
{{- form_label(form, null, { widget: parent() }) -}}
130+
{% else -%}
131131
<div class="radio">
132-
{{ form_label(form, null, { widget: parent() }) }}
132+
{{- form_label(form, null, { widget: parent() }) -}}
133133
</div>
134-
{% endif %}
134+
{%- endif %}
135135
{%- endblock radio_widget %}
136136

137137
{# Labels #}
138138

139139
{% block form_label -%}
140-
{% set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' control-label')|trim}) %}
140+
{%- set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' control-label')|trim}) -%}
141141
{{- parent() -}}
142142
{%- endblock form_label %}
143143

144-
{% block choice_label %}
144+
{% block choice_label -%}
145145
{# remove the checkbox-inline and radio-inline class, it's only useful for embed labels #}
146-
{% set label_attr = label_attr|merge({class: label_attr.class|default('')|replace({'checkbox-inline': '', 'radio-inline': ''})|trim}) %}
146+
{%- set label_attr = label_attr|merge({class: label_attr.class|default('')|replace({'checkbox-inline': '', 'radio-inline': ''})|trim}) -%}
147147
{{- block('form_label') -}}
148148
{% endblock %}
149149

@@ -168,8 +168,8 @@
168168
{% set label = name|humanize %}
169169
{% endif %}
170170
<label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>
171-
{{ widget|raw }}
172-
{{ label is not sameas(false) ? label|trans({}, translation_domain) }}
171+
{{- widget|raw -}}
172+
{{- label is not sameas(false) ? label|trans({}, translation_domain) -}}
173173
</label>
174174
{% endif %}
175175
{% endblock checkbox_radio_label %}
@@ -178,9 +178,9 @@
178178

179179
{% block form_row -%}
180180
<div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}">
181-
{{ form_label(form) }}
182-
{{ form_widget(form) }}
183-
{{ form_errors(form) }}
181+
{{- form_label(form) -}}
182+
{{- form_widget(form) -}}
183+
{{- form_errors(form) -}}
184184
</div>
185185
{%- endblock form_row %}
186186

@@ -192,35 +192,35 @@
192192

193193
{% block choice_row -%}
194194
{% set force_error = true %}
195-
{{ block('form_row') }}
195+
{{- block('form_row') }}
196196
{%- endblock choice_row %}
197197

198198
{% block date_row -%}
199199
{% set force_error = true %}
200-
{{ block('form_row') }}
200+
{{- block('form_row') }}
201201
{%- endblock date_row %}
202202

203203
{% block time_row -%}
204204
{% set force_error = true %}
205-
{{ block('form_row') }}
205+
{{- block('form_row') }}
206206
{%- endblock time_row %}
207207

208208
{% block datetime_row -%}
209209
{% set force_error = true %}
210-
{{ block('form_row') }}
210+
{{- block('form_row') }}
211211
{%- endblock datetime_row %}
212212

213213
{% block checkbox_row -%}
214214
<div class="form-group{% if not valid %} has-error{% endif %}">
215-
{{ form_widget(form) }}
216-
{{ form_errors(form) }}
215+
{{- form_widget(form) -}}
216+
{{- form_errors(form) -}}
217217
</div>
218218
{%- endblock checkbox_row %}
219219

220220
{% block radio_row -%}
221221
<div class="form-group{% if not valid %} has-error{% endif %}">
222-
{{ form_widget(form) }}
223-
{{ form_errors(form) }}
222+
{{- form_widget(form) -}}
223+
{{- form_errors(form) -}}
224224
</div>
225225
{%- endblock radio_row %}
226226

@@ -231,7 +231,7 @@
231231
{% if form.parent %}<span class="help-block">{% else %}<div class="alert alert-danger">{% endif %}
232232
<ul class="list-unstyled">
233233
{%- for error in errors -%}
234-
<li><span class="glyphicon glyphicon-exclamation-sign"></span> {{ error.message }}</li>
234+
<li><span class="glyphicon glyphicon-exclamation-sign"></span>{{ error.message }}</li>
235235
{%- endfor -%}
236236
</ul>
237237
{% if form.parent %}</span>{% else %}</div>{% endif %}
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Bridge\Twig\Tests\Extension;
13+
14+
use Symfony\Bridge\Twig\Extension\FormExtension;
15+
use Symfony\Bridge\Twig\Form\TwigRenderer;
16+
use Symfony\Bridge\Twig\Form\TwigRendererEngine;
17+
use Symfony\Bridge\Twig\Extension\TranslationExtension;
18+
use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator;
19+
use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubFilesystemLoader;
20+
use Symfony\Component\Form\FormView;
21+
use Symfony\Component\Form\Tests\AbstractBootstrap3LayoutTest;
22+
23+
class FormExtensionBootstrap3LayoutTest extends AbstractBootstrap3LayoutTest
24+
{
25+
/**
26+
* @var FormExtension
27+
*/
28+
protected $extension;
29+
30+
protected function setUp()
31+
{
32+
parent::setUp();
33+
34+
$rendererEngine = new TwigRendererEngine(array(
35+
'bootstrap_3_layout.html.twig',
36+
'custom_widgets.html.twig',
37+
));
38+
$renderer = new TwigRenderer($rendererEngine, $this->getMock('Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface'));
39+
40+
$this->extension = new FormExtension($renderer);
41+
42+
$loader = new StubFilesystemLoader(array(
43+
__DIR__.'/../../Resources/views/Form',
44+
__DIR__.'/Fixtures/templates/form',
45+
));
46+
47+
$environment = new \Twig_Environment($loader, array('strict_variables' => true));
48+
$environment->addExtension(new TranslationExtension(new StubTranslator()));
49+
$environment-> 10000 ;addExtension($this->extension);
50+
51+
$this->extension->initRuntime($environment);
52+
}
53+
54+
protected function tearDown()
55+
{
56+
parent::tearDown();
57+
58+
$this->extension = null;
59+
}
60+
61+
protected function renderForm(FormView $view, array $vars = array())
62+
{
63+
return (string) $this->extension->renderer->renderBlock($view, 'form', $vars);
64+
}
65+
66+
protected function renderEnctype(FormView $view)
67+
{
68+
return (string) $this->extension->renderer->searchAndRenderBlock($view, 'enctype');
69+
}
70+
71+
protected function renderLabel(FormView $view, $label = null, array $vars = array())
72+
{
73+
if ($label !== null) {
74+
$vars += array('label' => $label);
75+
}
76+
77+
return (string) $this->extension->renderer->searchAndRenderBlock($view, 'label', $vars);
78+
}
79+
80+
protected function renderErrors(FormView $view)
81+
{
82+
return (string) $this->extension->renderer->searchAndRenderBlock($view, 'errors');
83+
}
84+
85+
protected function renderWidget(FormView $view, array $vars = array())
86+
{
87+
return (string) $this->extension->renderer->searchAndRenderBlock($view, 'widget', $vars);
88+
}
89+
90+
protected function renderRow(FormView $view, array $vars = array())
91+
{
92+
return (string) $this->extension->renderer->searchAndRenderBlock($view, 'row', $vars);
93+
}
94+
95+
protected function renderRest(FormView $view, array $vars = array())
96+
{
97+
return (string) $this->extension->renderer->searchAndRenderBlock($view, 'rest', $vars);
98+
}
99+
100+
protected function renderStart(FormView $view, array $vars = array())
101+
{
102+
return (string) $this->extension->renderer->renderBlock($view, 'form_start', $vars);
103+
}
104+
105+
protected function renderEnd(FormView $view, array $vars = array())
106+
{
107+
return (string) $this->extension->renderer->renderBlock($view, 'form_end', $vars);
108+
}
109+
110+
protected function setTheme(FormView $view, array $themes)
111+
{
112+
$this->extension->renderer->setTheme($view, $themes);
113+
}
114+
}

0 commit comments

Comments
 (0)
0