Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
RouteParamsResolver.php
Go to the documentation of this file.
1 <?php
6 namespace Magento\Framework\Url;
7 
9 
23 {
27  protected $request;
28 
33 
37  protected $escaper;
38 
44  public function __construct(
45  \Magento\Framework\App\RequestInterface $request,
47  array $data = []
48  ) {
49  parent::__construct($data);
50  $this->request = $request;
51  $this->queryParamsResolver = $queryParamsResolver;
52  }
53 
59  public function setRouteParams(array $data, $unsetOldParams = true)
60  {
61  if (isset($data['_type'])) {
62  $this->setType($data['_type']);
63  unset($data['_type']);
64  }
65 
66  if (isset($data['_forced_secure'])) {
67  $this->setSecure((bool)$data['_forced_secure']);
68  $this->setSecureIsForced(true);
69  unset($data['_forced_secure']);
70  } elseif (isset($data['_secure'])) {
71  $this->setSecure((bool)$data['_secure']);
72  unset($data['_secure']);
73  }
74 
75  if (isset($data['_absolute'])) {
76  unset($data['_absolute']);
77  }
78 
79  if ($unsetOldParams) {
80  $this->unsetData('route_params');
81  }
82 
83  if (isset($data['_current'])) {
84  if (is_array($data['_current'])) {
85  foreach ($data['_current'] as $key) {
86  if (array_key_exists($key, $data) || !$this->request->getUserParam($key)) {
87  continue;
88  }
89  $data[$key] = $this->request->getUserParam($key);
90  }
91  } elseif ($data['_current']) {
92  foreach ($this->request->getUserParams() as $key => $value) {
93  if (array_key_exists($key, $data) || $this->getRouteParam($key)) {
94  continue;
95  }
96  $data[$key] = $value;
97  }
98  foreach ($this->request->getQuery() as $key => $value) {
99  $this->queryParamsResolver->setQueryParam($key, $value);
100  }
101  }
102  unset($data['_current']);
103  }
104 
105  if (isset($data['_use_rewrite'])) {
106  unset($data['_use_rewrite']);
107  }
108 
109  foreach ($data as $key => $value) {
110  if (!is_scalar($value) || $key == 'key' || !$this->getData('escape_params')) {
111  $this->setRouteParam($key, $value);
112  } else {
113  $this->setRouteParam(
114  $this->getEscaper()->encodeUrlParam($key),
115  $this->getEscaper()->encodeUrlParam($value)
116  );
117  }
118  }
119 
120  return $this;
121  }
122 
126  public function setRouteParam($key, $data)
127  {
128  $params = $this->_getData('route_params');
129  if (isset($params[$key]) && $params[$key] == $data) {
130  return $this;
131  }
132  $params[$key] = $data;
133  $this->unsetData('route_path');
134  return $this->setData('route_params', $params);
135  }
136 
140  public function getRouteParams()
141  {
142  return $this->_getData('route_params');
143  }
144 
148  public function getRouteParam($key)
149  {
150  return $this->getData('route_params', $key);
151  }
152 
159  private function getEscaper()
160  {
161  if ($this->escaper == null) {
163  ->get(\Magento\Framework\Escaper::class);
164  }
165  return $this->escaper;
166  }
167 }
getData($key='', $index=null)
Definition: DataObject.php:119
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
__construct(\Magento\Framework\App\RequestInterface $request, \Magento\Framework\Url\QueryParamsResolverInterface $queryParamsResolver, array $data=[])
$value
Definition: gender.phtml:16
setRouteParams(array $data, $unsetOldParams=true)
setData($key, $value=null)
Definition: DataObject.php:72
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE]
Definition: website.php:18