From 5ff400101b3490fa3e66adc7732ed549122036b8 Mon Sep 17 00:00:00 2001 From: yethee Date: Sun, 20 Sep 2015 23:05:20 +0300 Subject: [PATCH] [FrameworkBundle] Advanced search templates of bundles It uses two different locations to search templates of bundle, as described in the documentation. --- .../Bundle/FrameworkBundle/CacheWarmer/TemplateFinder.php | 6 +++++- .../Tests/CacheWarmer/TemplateFinderTest.php | 3 ++- .../Fixtures/Resources/BaseBundle/views/base.format.engine | 0 .../BaseBundle/views/controller/custom.format.engine | 0 4 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Resources/BaseBundle/views/base.format.engine create mode 100644 src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Resources/BaseBundle/views/controller/custom.format.engine diff --git a/src/Symfony/Bundle/FrameworkBundle/CacheWarmer/TemplateFinder.php b/src/Symfony/Bundle/FrameworkBundle/CacheWarmer/TemplateFinder.php index 07f81f5878ea1..2b756a2997abc 100644 --- a/src/Symfony/Bundle/FrameworkBundle/CacheWarmer/TemplateFinder.php +++ b/src/Symfony/Bundle/FrameworkBundle/CacheWarmer/TemplateFinder.php @@ -97,8 +97,12 @@ private function findTemplatesInFolder($dir) */ private function findTemplatesInBundle(BundleInterface $bundle) { - $templates = $this->findTemplatesInFolder($bundle->getPath().'/Resources/views'); $name = $bundle->getName(); + $templates = array_merge( + $this->findTemplatesInFolder($bundle->getPath().'/Resources/views'), + $this->findTemplatesInFolder($this->rootDir.'/'.$name.'/views') + ); + $templates = array_unique($templates); foreach ($templates as $i => $template) { $templates[$i] = $template->set('bundle', $name); diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/TemplateFinderTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/TemplateFinderTest.php index 59a7d1d9208e3..a417cdae3dd91 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/TemplateFinderTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/TemplateFinderTest.php @@ -46,10 +46,11 @@ function ($template) { return $template->getLogicalName(); }, $finder->findAllTemplates() ); - $this->assertCount(6, $templates, '->findAllTemplates() find all templates in the bundles and global folders'); + $this->assertCount(7, $templates, '->findAllTemplates() find all templates in the bundles and global folders'); $this->assertContains('BaseBundle::base.format.engine', $templates); $this->assertContains('BaseBundle::this.is.a.template.format.engine', $templates); $this->assertContains('BaseBundle:controller:base.format.engine', $templates); + $this->assertContains('BaseBundle:controller:custom.format.engine', $templates); $this->assertContains('::this.is.a.template.format.engine', $templates); $this->assertContains('::resource.format.engine', $templates); } diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Resources/BaseBundle/views/base.format.engine b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Resources/BaseBundle/views/base.format.engine new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Resources/BaseBundle/views/controller/custom.format.engine b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Resources/BaseBundle/views/controller/custom.format.engine new file mode 100644 index 0000000000000..e69de29bb2d1d