8000 Fixed templateExists on parse error of the template name · symfony/symfony@5ac466b · GitHub
[go: up one dir, main page]

Skip to content

Commit 5ac466b

Browse files
committed
Fixed templateExists on parse error of the template name
1 parent b1f6021 commit 5ac466b

File tree

3 files changed

+26
-6
lines changed

3 files changed

+26
-6
lines changed

src/Symfony/Component/HttpKernel/Fragment/HIncludeFragmentRenderer.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -135,17 +135,17 @@ private function templateExists($template)
135135
if ($this->templating instanceof EngineInterface) {
136136
try {
137137
return $this->templating->exists($template);
138-
} catch (\InvalidArgumentException $e) {
138+
} catch (\Exception $e) {
139139
return false;
140140
}
141141
}
142142

143143
$loader = $this->templating->getLoader();
144-
if ($loader instanceof ExistsLoaderInterface || method_exists($loader, 'exists')) {
145-
return $loader->exists($template);
146-
}
147-
148144
try {
145+
if ($loader instanceof ExistsLoaderInterface || method_exists($loader, 'exists')) {
146+
return $loader->exists($template);
147+
}
148+
149149
if (method_exists($loader, 'getSourceContext')) {
150150
$loader->getSourceContext($template);
151151
} else {

src/Symfony/Component/HttpKernel/Tests/Fragment/HIncludeFragmentRendererTest.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
use Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer;
1717
use Symfony\Component\HttpKernel\UriSigner;
1818
use Symfony\Component\HttpFoundation\Request;
19+
use Twig\Environment;
20+
use Twig\Loader\FilesystemLoader;
1921

2022
class HIncludeFragmentRendererTest extends TestCase
2123
{
@@ -86,4 +88,21 @@ public function testRenderWithDefaultText()
8688
$strategy = new HIncludeFragmentRenderer($engine);
8789
$this->assertEquals('<hx:include src="/foo">default</hx:include>', $strategy->render('/foo', Request::create('/'), array('default' => 'default'))->getContent());
8890
}
91+
92+
public function testRenderWithEngineAndDefaultText()
93+
{
94+
$engine = $this->getMockBuilder('Symfony\\Component\\Templating\\EngineInterface')->getMock();
95+
$engine->expects($this->once())
96+
->method('exists')
97+
->with('loading...')
98+
->will($this->throwException(new \RuntimeException()));
99+
100+
// only default
101+
$strategy = new HIncludeFragmentRenderer($engine);
102+
$this->assertEquals('<hx:include src="/foo">loading...</hx:include>', $strategy->render('/foo', Request::create('/'), array('default' => 'loading...'))->getContent());
103+
104+
// only default
105+
$strategy = new HIncludeFragmentRenderer(new Environment(new FilesystemLoader()));
106+
$this->assertEquals('<hx:include src="/foo">@default</hx:include>', $strategy->render('/foo', Request::create('/'), array('default' => '@default'))->getContent());
107+
}
89108
}

src/Symfony/Component/HttpKernel/composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@
3838
"symfony/stopwatch": "~2.3|~3.0.0",
3939
"symfony/templating": "~2.2|~3.0.0",
4040
"symfony/translation": "^2.0.5|~3.0.0",
41-
"symfony/var-dumper": "~2.6|~3.0.0"
41+
"symfony/var-dumper": "~2.6|~3.0.0",
42+
"twig/twig": "~1.34|~2.4"
4243
},
4344
"conflict": {
4445
"symfony/config": "<2.7",

0 commit comments

Comments
 (0)
0