Skip to content

Commit 8f7cb36

Browse files
author
Dmytro Voskoboinikov
committed
Merge branch 'MAGETWO-39021' into sprint58
2 parents 4d73303 + 1a4a9fe commit 8f7cb36

File tree

5 files changed

+74
-0
lines changed

5 files changed

+74
-0
lines changed

app/code/Magento/Backend/Model/Url.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ class Url extends \Magento\Framework\Url implements \Magento\Backend\Model\UrlIn
8686
* @param \Magento\Framework\Url\RouteParamsResolverFactory $routeParamsResolverFactory
8787
* @param \Magento\Framework\Url\QueryParamsResolverInterface $queryParamsResolver
8888
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
89+
* @param \Magento\Framework\Url\RouteParamsPreprocessorInterface $routeParamsPreprocessor
8990
* @param string $scopeType
9091
* @param \Magento\Backend\Helper\Data $backendHelper
9192
* @param Menu\Config $menuConfig
@@ -108,6 +109,7 @@ public function __construct(
108109
\Magento\Framework\Url\RouteParamsResolverFactory $routeParamsResolverFactory,
109110
\Magento\Framework\Url\QueryParamsResolverInterface $queryParamsResolver,
110111
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
112+
\Magento\Framework\Url\RouteParamsPreprocessorInterface $routeParamsPreprocessor,
111113
$scopeType,
112114
\Magento\Backend\Helper\Data $backendHelper,
113115
\Magento\Backend\Model\Menu\Config $menuConfig,
@@ -129,6 +131,7 @@ public function __construct(
129131
$routeParamsResolverFactory,
130132
$queryParamsResolver,
131133
$scopeConfig,
134+
$routeParamsPreprocessor,
132135
$scopeType,
133136
$data
134137
);

app/etc/di.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@
121121
<preference for="Magento\Framework\Session\StorageInterface" type="Magento\Framework\Session\Storage" />
122122
<preference for="Magento\Framework\App\Request\DataPersistorInterface" type="Magento\Framework\App\Request\DataPersistor" />
123123
<preference for="Magento\Framework\Url\RouteParamsResolverInterface" type="Magento\Framework\Url\RouteParamsResolver" />
124+
<preference for="Magento\Framework\Url\RouteParamsPreprocessorInterface" type="Magento\Framework\Url\RouteParamsPreprocessorComposite" />
124125
<preference for="Magento\Framework\Url\QueryParamsResolverInterface" type="Magento\Framework\Url\QueryParamsResolver" />
125126
<preference for="Magento\Framework\Url\ScopeResolverInterface" type="Magento\Framework\Url\ScopeResolver" />
126127
<preference for="Magento\Framework\Url\SecurityInfoInterface" type="Magento\Framework\Url\SecurityInfo\Proxy" />

lib/internal/Magento/Framework/Url.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,11 @@ class Url extends \Magento\Framework\DataObject implements \Magento\Framework\Ur
162162
*/
163163
protected $_scopeConfig;
164164

165+
/**
166+
* @var \Magento\Framework\Url\RouteParamsPreprocessorInterface
167+
*/
168+
protected $routeParamsPreprocessor;
169+
165170
/**
166171
* @param \Magento\Framework\App\Route\ConfigInterface $routeConfig
167172
* @param \Magento\Framework\App\RequestInterface $request
@@ -172,6 +177,7 @@ class Url extends \Magento\Framework\DataObject implements \Magento\Framework\Ur
172177
* @param \Magento\Framework\Url\RouteParamsResolverFactory $routeParamsResolverFactory
173178
* @param \Magento\Framework\Url\QueryParamsResolverInterface $queryParamsResolver
174179
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
180+
* @param \Magento\Framework\Url\RouteParamsPreprocessorInterface $routeParamsPreprocessor
175181
* @param string $scopeType
176182
* @param array $data
177183
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
@@ -186,6 +192,7 @@ public function __construct(
186192
\Magento\Framework\Url\RouteParamsResolverFactory $routeParamsResolverFactory,
187193
\Magento\Framework\Url\QueryParamsResolverInterface $queryParamsResolver,
188194
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
195+
\Magento\Framework\Url\RouteParamsPreprocessorInterface $routeParamsPreprocessor,
189196
$scopeType,
190197
array $data = []
191198
) {
@@ -198,6 +205,7 @@ public function __construct(
198205
$this->_routeParamsResolverFactory = $routeParamsResolverFactory;
199206
$this->_queryParamsResolver = $queryParamsResolver;
200207
$this->_scopeConfig = $scopeConfig;
208+
$this->routeParamsPreprocessor = $routeParamsPreprocessor;
201209
$this->_scopeType = $scopeType;
202210
parent::__construct($data);
203211
}
@@ -792,6 +800,9 @@ public function getUrl($routePath = null, $routeParams = null)
792800
return $routePath;
793801
}
794802

803+
$routeParams = $this->routeParamsPreprocessor
804+
->execute($this->_scopeResolver->getAreaCode(), $routePath, $routeParams);
805+
795806
$isCached = true;
796807
$isArray = is_array($routeParams);
797808

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Framework\Url;
7+
8+
/**
9+
* Route parameters composite preprocessor.
10+
*/
11+
class RouteParamsPreprocessorComposite implements RouteParamsPreprocessorInterface
12+
{
13+
/**
14+
* @var RouteParamsPreprocessorInterface[]
15+
*/
16+
private $routeParamsPreprocessors;
17+
18+
/**
19+
* @param RouteParamsPreprocessorInterface[] $routeParamsPreprocessors
20+
*/
21+
public function __construct(array $routeParamsPreprocessors = [])
22+
{
23+
$this->routeParamsPreprocessors = $routeParamsPreprocessors;
24+
}
25+
26+
/**
27+
* {@inheritdoc}
28+
*/
29+
public function execute($areaCode, $routePath, $routeParams)
30+
{
31+
foreach ($this->routeParamsPreprocessors as $preprocessor) {
32+
$routeParams = $preprocessor->execute($areaCode, $routePath, $routeParams);
33+
}
34+
35+
return $routeParams;
36+
}
37+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Framework\Url;
7+
8+
/**
9+
* Route parameters preprocessor interface.
10+
*/
11+
interface RouteParamsPreprocessorInterface
12+
{
13+
/**
14+
* Processes route params.
15+
*
16+
* @param string $areaCode
17+
* @param string|null $routePath
18+
* @param array|null $routeParams
19+
* @return array|null
20+
*/
21+
public function execute($areaCode, $routePath, $routeParams);
22+
}

0 commit comments

Comments
 (0)