Skip to content

Commit 9e2d1ae

Browse files
committed
Avoid duplicate loading of configuration files
1 parent 619f2db commit 9e2d1ae

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

app/code/Magento/Theme/Model/PageLayout/Config/Builder.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ class Builder implements \Magento\Framework\View\Model\PageLayout\Config\Builder
2727
*/
2828
protected $themeCollection;
2929

30+
/**
31+
* @var array
32+
*/
33+
private $configFiles = [];
34+
3035
/**
3136
* @param \Magento\Framework\View\PageLayout\ConfigFactory $configFactory
3237
* @param \Magento\Framework\View\PageLayout\File\Collector\Aggregated $fileCollector
@@ -56,11 +61,14 @@ public function getPageLayoutsConfig()
5661
*/
5762
protected function getConfigFiles()
5863
{
59-
$configFiles = [];
60-
foreach ($this->themeCollection->loadRegisteredThemes() as $theme) {
61-
$configFiles = array_merge($configFiles, $this->fileCollector->getFilesContent($theme, 'layouts.xml'));
64+
if (empty($this->configFiles)) {
65+
$configFiles = [];
66+
foreach ($this->themeCollection->loadRegisteredThemes() as $theme) {
67+
$configFiles[] = $this->fileCollector->getFilesContent($theme, 'layouts.xml');
68+
}
69+
$this->configFiles = array_merge(...$configFiles);
6270
}
6371

64-
return $configFiles;
72+
return $this->configFiles;
6573
}
6674
}

app/code/Magento/Theme/Test/Unit/Model/PageLayout/Config/BuilderTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public function testGetPageLayoutsConfig()
8383
->disableOriginalConstructor()
8484
->getMock();
8585

86-
$this->themeCollection->expects($this->any())
86+
$this->themeCollection->expects($this->once())
8787
->method('loadRegisteredThemes')
8888
->willReturn([$theme1, $theme2]);
8989

0 commit comments

Comments
 (0)