77use Magento \Framework \View \LayoutFactory ;
88use Magento \Framework \View \LayoutInterface ;
99use Magento \Framework \View \Page \Config as PageConfig ;
10+ use Magento \Framework \View \Page \ConfigFactory as PageConfigFactory ;
1011use Magento \Framework \View \Page \Layout \Reader as PageLayoutReader ;
1112
1213class LayoutLoader
@@ -17,6 +18,7 @@ public function __construct(
1718 private readonly LayoutHandlerComposite $ layoutHandlerComposite ,
1819 private readonly BuilderFactory $ layoutBuilderFactory ,
1920 private readonly PageConfig $ pageConfig ,
21+ private readonly PageConfigFactory $ pageConfigFactory ,
2022 private readonly PageLayoutReader $ pageLayoutReader ,
2123 ) {
2224 }
@@ -26,14 +28,25 @@ public function load(array $handles = [], array $pageHandles = [], bool $isolate
2628 if ($ isolated ) {
2729 $ layout = $ this ->layoutFactory ->create ();
2830 $ update = $ layout ->getUpdate ();
31+ $ update ->addHandle ('default ' );
2932
3033 $ update ->addPageHandles ($ pageHandles );
3134 foreach ($ handles as $ handle ) {
3235 $ update ->addHandle ($ this ->sanitizeHandle ($ handle ));
3336 }
3437
35- $ layout ->generateXml ();
36- $ layout ->generateElements ();
38+ $ pageConfig = $ this ->pageConfigFactory ->create (); // important: fresh instance
39+
40+ $ builder = $ this ->layoutBuilderFactory ->create (
41+ BuilderFactory::TYPE_PAGE ,
42+ [
43+ 'layout ' => $ layout ,
44+ 'pageConfig ' => $ pageConfig ,
45+ 'pageLayoutReader ' => $ this ->pageLayoutReader ,
46+ ]
47+ );
48+
49+ $ builder ->build ();
3750
3851 return $ layout ;
3952 }
0 commit comments