diff --git a/src/Model/Component/Resolver/Layout.php b/src/Model/Component/Resolver/Layout.php index 151af988..7a4faebf 100644 --- a/src/Model/Component/Resolver/Layout.php +++ b/src/Model/Component/Resolver/Layout.php @@ -85,6 +85,9 @@ public function construct(AbstractBlock $block): Component public function reconstruct(RequestInterface $request): Component { $page = $this->resultPageFactory->create(); + if ($request->getFingerprint('layout')) { + $page->getConfig()->setPageLayout(strtolower($request->getFingerprint('layout'))); + } $page->addHandle(strtolower($request->getFingerprint('handle')))->initLayout(); /** diff --git a/src/Model/ComponentManager.php b/src/Model/ComponentManager.php index 5bdefeec..c8d1aa5a 100644 --- a/src/Model/ComponentManager.php +++ b/src/Model/ComponentManager.php @@ -12,6 +12,7 @@ use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Locale\Resolver; use Magento\Framework\View\Element\Template; +use Magento\Framework\View\Page\Config; use Magewirephp\Magewire\Exception\AcceptableException; use Magewirephp\Magewire\Component; use Magewirephp\Magewire\Exception\ComponentHydrationException; @@ -21,6 +22,7 @@ class ComponentManager { protected Resolver $localeResolver; protected HttpFactory $httpFactory; + protected Config $pageConfig; protected array $updateActionsPool; protected array $hydrationPool; @@ -28,12 +30,14 @@ public function __construct( HydratorContext $hydratorContext, Resolver $localeResolver, HttpFactory $httpFactory, + Config $pageConfig, array $updateActionsPool = [], array $hydrationPool = [] ) { $this->localeResolver = $localeResolver; $this->updateActionsPool = $updateActionsPool; $this->httpFactory = $httpFactory; + $this->pageConfig = $pageConfig; // Core Hydrate & Dehydrate lifecycle sort order. $this->hydrationPool = $this->sortHydrators($hydrationPool, [ @@ -153,7 +157,8 @@ public function createInitialRequest( // Custom relative to Livewire's core. 'handle' => $handle ?? $request->getFullActionName(), - 'type' => $component::COMPONENT_TYPE + 'type' => $component::COMPONENT_TYPE, + 'layout' => $this->pageConfig->getPageLayout() ], 'serverMemo' => [