Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 9bc309e

Browse filesBrowse files
committed
[Form] [TwigBridge] Added option to disable usage of default themes when rendering a form
1 parent 8486a50 commit 9bc309e
Copy full SHA for 9bc309e
Expand file treeCollapse file tree

21 files changed

+108
-36
lines changed

‎src/Symfony/Bridge/Twig/CHANGELOG.md

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Twig/CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ CHANGELOG
44
3.4.0
55
-----
66

7+
* added an `only` keyword to `form_theme` tag to disable usage of default themes when rendering a form
78
* deprecated `Symfony\Bridge\Twig\Form\TwigRenderer`
89
* deprecated `DebugCommand::set/getTwigEnvironment`. Pass an instance of
910
`Twig\Environment` as first argument of the constructor instead

‎src/Symfony/Bridge/Twig/Form/TwigRendererEngine.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Twig/Form/TwigRendererEngine.php
+5-3Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,11 @@ protected function loadResourceForBlockName($cacheKey, FormView $view, $blockNam
124124

125125
// Check the default themes once we reach the root view without success
126126
if (!$view->parent) {
127-
for ($i = count($this->defaultThemes) - 1; $i >= 0; --$i) {
128-
$this->loadResourcesFromTheme($cacheKey, $this->defaultThemes[$i]);
129-
// CONTINUE LOADING (see doc comment)
127+
if (!isset($this->useDefaultThemes[$cacheKey]) || $this->useDefaultThemes[$cacheKey]) {
128+
for ($i = count($this->defaultThemes) - 1; $i >= 0; --$i) {
129+
$this->loadResourcesFromTheme($cacheKey, $this->defaultThemes[$i]);
130+
// CONTINUE LOADING (see doc comment)
131+
}
130132
}
131133
}
132134

‎src/Symfony/Bridge/Twig/Node/FormThemeNode.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Twig/Node/FormThemeNode.php
+4-2Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
*/
2323
class FormThemeNode extends Node
2424
{
25-
public function __construct(Node $form, Node $resources, $lineno, $tag = null)
25+
public function __construct(Node $form, Node $resources, $lineno, $tag = null, $only = false)
2626
{
27-
parent::__construct(array('form' => $form, 'resources' => $resources), array(), $lineno, $tag);
27+
parent::__construct(array('form' => $form, 'resources' => $resources), array('only' => (bool) $only), $lineno, $tag);
2828
}
2929

3030
public function compile(Compiler $compiler)
@@ -44,6 +44,8 @@ public function compile(Compiler $compiler)
4444
->subcompile($this->getNode('form'))
4545
->raw(', ')
4646
->subcompile($this->getNode('resources'))
47+
->raw(', ')
48+
->raw(false === $this->getAttribute('only') ? 'true' : 'false')
4749
->raw(");\n");
4850
}
4951
}

‎src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap3HorizontalLayoutTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap3HorizontalLayoutTest.php
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ protected function renderEnd(FormView $view, array $vars = array())
9999
return (string) $this->renderer->renderBlock($view, 'form_end', $vars);
100100
}
101101

102-
protected function setTheme(FormView $view, array $themes)
102+
protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true)
103103
{
104-
$this->renderer->setTheme($view, $themes);
104+
$this->renderer->setTheme($view, $themes, $useDefaultThemes);
105105
}
106106
}

‎src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap3LayoutTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap3LayoutTest.php
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ protected function renderEnd(FormView $view, array $vars = array())
119119
return (string) $this->renderer->renderBlock($view, 'form_end', $vars);
120120
}
121121

122-
protected function setTheme(FormView $view, array $themes)
122+
protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true)
123123
{
124-
$this->renderer->setTheme($view, $themes);
124+
$this->renderer->setTheme($view, $themes, $useDefaultThemes);
125125
}
126126
}

‎src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap4HorizontalLayoutTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap4HorizontalLayoutTest.php
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ protected function renderEnd(FormView $view, array $vars = array())
100100
return (string) $this->renderer->renderBlock($view, 'form_end', $vars);
101101
}
102102

103-
protected function setTheme(FormView $view, array $themes)
103+
protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true)
104104
{
105-
$this->renderer->setTheme($view, $themes);
105+
$this->renderer->setTheme($view, $themes, $useDefaultThemes);
106106
}
107107
}

‎src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap4LayoutTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap4LayoutTest.php
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ protected function renderEnd(FormView $view, array $vars = array())
122122
return (string) $this->renderer->renderBlock($view, 'form_end', $vars);
123123
}
124124

125-
protected function setTheme(FormView $view, array $themes)
125+
protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true)
126126
{
127-
$this->renderer->setTheme($view, $themes);
127+
$this->renderer->setTheme($view, $themes, $useDefaultThemes);
128128
}
129129
}

‎src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionDivLayoutTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionDivLayoutTest.php
+5-5Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public function testThemeBlockInheritanceUsingUse()
6262
->createView()
6363
;
6464

65-
$this->setTheme($view, array('theme_use.html.twig'));
65+
$this->setTheme($view, array('theme_use.html.twig'), true);
6666

6767
$this->assertMatchesXpath(
6868
$this->renderWidget($view),
@@ -77,7 +77,7 @@ public function testThemeBlockInheritanceUsingExtend()
7777
->createView()
7878
;
7979

80-
$this->setTheme($view, array('theme_extends.html.twig'));
80+
$this->setTheme($view, array('theme_extends.html.twig'), true);
8181

8282
$this->assertMatchesXpath(
8383
$this->renderWidget($view),
@@ -92,7 +92,7 @@ public function testThemeBlockInheritanceUsingDynamicExtend()
9292
->createView()
9393
;
9494

95-
$this->renderer->setTheme($view, array('page_dynamic_extends.html.twig'));
95+
$this->renderer->setTheme($view, array('page_dynamic_extends.html.twig'), true);
9696
$this->assertMatchesXpath(
9797
$this->renderer->searchAndRenderBlock($view, 'row'),
9898
'/div/label[text()="child"]'
@@ -193,9 +193,9 @@ protected function renderEnd(FormView $view, array $vars = array())
193193
return (string) $this->renderer->renderBlock($view, 'form_end', $vars);
194194
}
195195

196-
protected function setTheme(FormView $view, array $themes)
196+
protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true)
197197
{
198-
$this->renderer->setTheme($view, $themes);
198+
$this->renderer->setTheme($view, $themes, $useDefaultThemes);
199199
}
200200

201201
public static function themeBlockInheritanceProvider()

‎src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionTableLayoutTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionTableLayoutTest.php
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ protected function renderEnd(FormView $view, array $vars = array())
120120
return (string) $this->renderer->renderBlock($view, 'form_end', $vars);
121121
}
122122

123-
protected function setTheme(FormView $view, array $themes)
123+
protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true)
124124
{
125-
$this->renderer->setTheme($view, $themes);
125+
$this->renderer->setTheme($view, $themes, $useDefaultThemes);
126126
}
127127
}

‎src/Symfony/Bridge/Twig/Tests/Node/FormThemeTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Twig/Tests/Node/FormThemeTest.php
+23-2Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public function testConstructor()
3939

4040
$this->assertEquals($form, $node->getNode('form'));
4141
$this->assertEquals($resources, $node->getNode('resources'));
42+
$this->assertFalse($node->getAttribute('only'));
4243
}
4344

4445
public function testCompile()
@@ -60,7 +61,17 @@ public function testCompile()
6061

6162
$this->assertEquals(
6263
sprintf(
63-
'$this->env->getRuntime("Symfony\\\\Component\\\\Form\\\\FormRenderer")->setTheme(%s, array(0 => "tpl1", 1 => "tpl2"));',
64+
'$this->env->getRuntime("Symfony\\\\Component\\\\Form\\\\FormRenderer")->setTheme(%s, array(0 => "tpl1", 1 => "tpl2"), true);',
65+
$this->getVariableGetter('form')
66+
),
67+
trim($compiler->compile($node)->getSource())
68+
);
69+
70+
$node = new FormThemeNode($form, $resources, 0, null, true);
71+
72+
$this->assertEquals(
73+
sprintf(
74+
'$this->env->getRuntime("Symfony\\\\Component\\\\Form\\\\FormRenderer")->setTheme(%s, array(0 => "tpl1", 1 => "tpl2"), false);',
6475
$this->getVariableGetter('form')
6576
),
6677
trim($compiler->compile($node)->getSource())
@@ -72,7 +83,17 @@ public function testCompile()
7283

7384
$this->assertEquals(
7485
sprintf(
75-
'$this->env->getRuntime("Symfony\\\\Component\\\\Form\\\\FormRenderer")->setTheme(%s, "tpl1");',
86+
'$this->env->getRuntime("Symfony\\\\Component\\\\Form\\\\FormRenderer")->setTheme(%s, "tpl1", true);',
87+
$this->getVariableGetter('form')
88+
),
89+
trim($compiler->compile($node)->getSource())
90+
);
91+
92+
$node = new FormThemeNode($form, $resources, 0, null, true);
93+
94+
$this->assertEquals(
95+
sprintf(
96+
'$this->env->getRuntime("Symfony\\\\Component\\\\Form\\\\FormRenderer")->setTheme(%s, "tpl1", false);',
7697
$this->getVariableGetter('form')
7798
),
7899
trim($compiler->compile($node)->getSource())

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.