Skip to content

Commit 3b3dcd4

Browse files
author
Alex Paliarush
committed
MAGETWO-92260: GraphQL - Fix urlResolver query to support relative path #13
1 parent 2babeec commit 3b3dcd4

File tree

7 files changed

+58
-58
lines changed

7 files changed

+58
-58
lines changed

app/code/Magento/CmsUrlRewriteGraphQl/Model/Resolver/UrlRewrite/HomePageUrlResolver.php renamed to app/code/Magento/CmsUrlRewriteGraphQl/Model/Resolver/UrlRewrite/HomePageUrlLocator.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77

88
namespace Magento\CmsUrlRewriteGraphQl\Model\Resolver\UrlRewrite;
99

10-
use Magento\UrlRewriteGraphQl\Model\Resolver\UrlRewrite\CustomUrlResolverInterface;
10+
use Magento\UrlRewriteGraphQl\Model\Resolver\UrlRewrite\CustomUrlLocatorInterface;
1111
use Magento\Store\Model\ScopeInterface;
1212
use Magento\Cms\Helper\Page;
1313

1414
/**
15-
* Home page URL resolver.
15+
* Home page URL locator.
1616
*/
17-
class HomePageUrlResolver implements CustomUrlResolverInterface
17+
class HomePageUrlLocator implements CustomUrlLocatorInterface
1818
{
1919
/**
2020
* @var \Magento\Framework\App\Config\ScopeConfigInterface
@@ -33,7 +33,7 @@ public function __construct(
3333
/**
3434
* @inheritdoc
3535
*/
36-
public function resolveUrl($urlKey): ?string
36+
public function locateUrl($urlKey): ?string
3737
{
3838
if ($urlKey === '/') {
3939
$homePageUrl = $this->scopeConfig->getValue(

app/code/Magento/CmsUrlRewriteGraphQl/etc/di.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
*/
77
-->
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
9-
<type name="Magento\UrlRewriteGraphQl\Model\Resolver\UrlRewrite\CustomUrlResolver">
9+
<type name="Magento\UrlRewriteGraphQl\Model\Resolver\UrlRewrite\CustomUrlLocator">
1010
<arguments>
11-
<argument name="urlResolvers" xsi:type="array">
12-
<item name="homePageResolver" xsi:type="object">Magento\CmsUrlRewriteGraphQl\Model\Resolver\UrlRewrite\HomePageUrlResolver</item>
11+
<argument name="urlLocators" xsi:type="array">
12+
<item name="homePageUrlLocator" xsi:type="object">Magento\CmsUrlRewriteGraphQl\Model\Resolver\UrlRewrite\HomePageUrlLocator</item>
1313
</argument>
1414
</arguments>
1515
</type>

app/code/Magento/UrlRewriteGraphQl/Model/Resolver/UrlRewrite.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
use Magento\Framework\GraphQl\Query\ResolverInterface;
1515
use Magento\Store\Model\StoreManagerInterface;
1616
use Magento\UrlRewrite\Model\UrlFinderInterface;
17-
use Magento\UrlRewriteGraphQl\Model\Resolver\UrlRewrite\CustomUrlResolverInterface;
17+
use Magento\UrlRewriteGraphQl\Model\Resolver\UrlRewrite\CustomUrlLocatorInterface;
1818

1919
/**
2020
* UrlRewrite field resolver, used for GraphQL request processing.
@@ -37,26 +37,26 @@ class UrlRewrite implements ResolverInterface
3737
private $valueFactory;
3838

3939
/**
40-
* @var UrlRewrite\CustomUrlResolverInterface
40+
* @var CustomUrlLocatorInterface
4141
*/
42-
private $customUrlResolver;
42+
private $customUrlLocator;
4343

4444
/**
4545
* @param UrlFinderInterface $urlFinder
4646
* @param StoreManagerInterface $storeManager
4747
* @param ValueFactory $valueFactory
48-
* @param CustomUrlResolverInterface $customUrlResolver
48+
* @param CustomUrlLocatorInterface $customUrlLocator
4949
*/
5050
public function __construct(
5151
UrlFinderInterface $urlFinder,
5252
StoreManagerInterface $storeManager,
5353
ValueFactory $valueFactory,
54-
CustomUrlResolverInterface $customUrlResolver
54+
CustomUrlLocatorInterface $customUrlLocator
5555
) {
5656
$this->urlFinder = $urlFinder;
5757
$this->storeManager = $storeManager;
5858
$this->valueFactory = $valueFactory;
59-
$this->customUrlResolver = $customUrlResolver;
59+
$this->customUrlLocator = $customUrlLocator;
6060
}
6161

6262
/**
@@ -78,7 +78,7 @@ public function resolve(
7878
if (substr($url, 0, 1) === '/' && $url !== '/') {
7979
$url = ltrim($url, '/');
8080
}
81-
$customUrl = $this->customUrlResolver->resolveUrl($url);
81+
$customUrl = $this->customUrlLocator->locateUrl($url);
8282
$url = $customUrl ?: $url;
8383
$urlRewrite = $this->findCanonicalUrl($url);
8484
if ($urlRewrite) {
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\UrlRewriteGraphQl\Model\Resolver\UrlRewrite;
9+
10+
/**
11+
* Pool of custom URL locators.
12+
*/
13+
class CustomUrlLocator implements CustomUrlLocatorInterface
14+
{
15+
/**
16+
* @var CustomUrlLocatorInterface[]
17+
*/
18+
private $urlLocators;
19+
20+
/**
21+
* @param CustomUrlLocatorInterface[] $urlLocators
22+
*/
23+
public function __construct(array $urlLocators = [])
24+
{
25+
$this->urlLocators = $urlLocators;
26+
}
27+
28+
/**
29+
* @inheritdoc
30+
*/
31+
public function locateUrl($urlKey): ?string
32+
{
33+
foreach ($this->urlLocators as $urlLocator) {
34+
$url = $urlLocator->locateUrl($urlKey);
35+
if ($url !== null) {
36+
return $url;
37+
}
38+
}
39+
return null;
40+
}
41+
}

app/code/Magento/UrlRewriteGraphQl/Model/Resolver/UrlRewrite/CustomUrlResolverInterface.php renamed to app/code/Magento/UrlRewriteGraphQl/Model/Resolver/UrlRewrite/CustomUrlLocatorInterface.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
*
1313
* It can be used, for example, to resolve '\' URL path to a 'Home' page.
1414
*/
15-
interface CustomUrlResolverInterface
15+
interface CustomUrlLocatorInterface
1616
{
1717
/**
1818
* Resolve URL based on custom rules.
1919
*
2020
* @param string $urlKey
2121
* @return string|null Return null if URL cannot be resolved
2222
*/
23-
public function resolveUrl($urlKey): ?string;
23+
public function locateUrl($urlKey): ?string;
2424
}

app/code/Magento/UrlRewriteGraphQl/Model/Resolver/UrlRewrite/CustomUrlResolver.php

Lines changed: 0 additions & 41 deletions
This file was deleted.

app/code/Magento/UrlRewriteGraphQl/etc/di.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66
*/
77
-->
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
9-
<preference for="Magento\UrlRewriteGraphQl\Model\Resolver\UrlRewrite\CustomUrlResolverInterface" type="Magento\UrlRewriteGraphQl\Model\Resolver\UrlRewrite\CustomUrlResolver"/>
9+
<preference for="Magento\UrlRewriteGraphQl\Model\Resolver\UrlRewrite\CustomUrlLocatorInterface" type="Magento\UrlRewriteGraphQl\Model\Resolver\UrlRewrite\CustomUrlLocator"/>
1010
</config>

0 commit comments

Comments
 (0)