diff --git a/src/Model/Resolver/Page.php b/src/Model/Resolver/Page.php index a5357c4..02bb854 100644 --- a/src/Model/Resolver/Page.php +++ b/src/Model/Resolver/Page.php @@ -2,10 +2,10 @@ /** * ScandiPWA_CmsGraphQl * - * @category Scandiweb - * @package ScandiPWA_CmsGraphQl - * @author Kriss Andrejevs - * @copyright Copyright (c) 2018 Scandiweb, Ltd (https://scandiweb.com) + * @category Scandiweb + * @package ScandiPWA_CmsGraphQl + * @author Kriss Andrejevs + * @copyright Copyright (c) 2018 Scandiweb, Ltd (https://scandiweb.com) */ namespace ScandiPWA\CmsGraphQl\Model\Resolver; @@ -19,6 +19,7 @@ use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Cms\Model\PageFactory; +use Magento\Store\Model\StoreManagerInterface; /** * Class Page @@ -26,21 +27,22 @@ */ class Page extends \Magento\CmsGraphQl\Model\Resolver\Page { - /** * @var PageDataProvider */ private $pageDataProvider; - /** * @var ValueFactory */ private $valueFactory; - /** * @var PageFactory */ private $pageFactory; + /** + * @var StoreManagerInterface + */ + private $storeManager; /** * @param PageDataProvider $pageDataProvider @@ -49,7 +51,8 @@ class Page extends \Magento\CmsGraphQl\Model\Resolver\Page public function __construct( PageDataProvider $pageDataProvider, ValueFactory $valueFactory, - PageFactory $pageFactory + PageFactory $pageFactory, + StoreManagerInterface $storeManager ) { parent::__construct( $pageDataProvider @@ -57,6 +60,7 @@ public function __construct( $this->pageDataProvider = $pageDataProvider; $this->valueFactory = $valueFactory; $this->pageFactory = $pageFactory; + $this->storeManager = $storeManager; } /** @@ -68,14 +72,14 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ) : Value { - + ): Value { $result = function () use ($args) { $pageId = $this->getPageId($args); $pageData = $this->getPageData($pageId); return $pageData; }; + return $this->valueFactory->create($result); } @@ -86,16 +90,18 @@ public function resolve( */ private function getPageId(array $args): int { + $storeId = $this->storeManager->getStore()->getId(); if (isset($args['id'])) { return (int)$args['id']; } - if (isset($args['url_key'])) { - return (int)$this->pageFactory->create()->load($args['url_key'])->getId(); + return (int)$this->pageFactory->create() + ->setStoreId($storeId) + ->load($args['url_key']) + ->setStoreId($storeId) + ->getId(); } - throw new GraphQlInputException(__('Page id should be specified')); - } /** @@ -110,7 +116,7 @@ private function getPageData(int $pageId): array } catch (NoSuchEntityException $e) { throw new GraphQlNoSuchEntityException(__($e->getMessage()), $e); } + return $pageData; } - }