Skip to content

Commit 7308a17

Browse files
committed
[TwigBundle] Fix bug where namespaced paths don't take parent bundles in account
1 parent deb527d commit 7308a17

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,13 @@ public function load(array $configs, ContainerBuilder $container)
9292
$dir = dirname($reflection->getFileName()).'/Resources/views';
9393
if (is_dir($dir)) {
9494
$this->addTwigPath($twigFilesystemLoaderDefinition, $dir, $bundle);
95+
96+
$classMock = new $class;
97+
$parent = $classMock->getParent();
98+
99+
if ($parent) {
100+
$this->prependTwigPath($twigFilesystemLoaderDefinition, $dir, $parent);
101+
}
95102
}
96103
$container->addResource(new FileExistenceResource($dir));
97104
}
@@ -140,11 +147,23 @@ public function load(array $configs, ContainerBuilder $container)
140147

141148
private function addTwigPath($twigFilesystemLoaderDefinition, $dir, $bundle)
142149
{
143-
$name = $bundle;
150+
$name = $this->stripBundleName($bundle);
151+
$twigFilesystemLoaderDefinition->addMethodCall('addPath', array($dir, $name));
152+
}
153+
154+
private function prependTwigPath($twigFilesystemLoaderDefinition, $dir, $bundle)
155+
{
156+
$name = $this->stripBundleName($bundle);
157+
$twigFilesystemLoaderDefinition->addMethodCall('prependPath', array($dir, $name));
158+
}
159+
160+
private function stripBundleName($name)
161+
{
144162
if ('Bundle' === substr($name, -6)) {
145163
$name = substr($name, 0, -6);
146164
}
147-
$twigFilesystemLoaderDefinition->addMethodCall('addPath', array($dir, $name));
165+
166+
return $name;
148167
}
149168

150169
/**

0 commit comments

Comments
 (0)