Commit 3d2e4c728a4d487537ff6c095b3318decb82cc2f
1 parent
fb8277be
set redirect to url manager
Showing
1 changed file
with
31 additions
and
15 deletions
Show diff stats
frontend/components/UrlManager.php
| @@ -3,11 +3,13 @@ | @@ -3,11 +3,13 @@ | ||
| 3 | namespace frontend\components; | 3 | namespace frontend\components; |
| 4 | 4 | ||
| 5 | use artbox\core\models\Alias; | 5 | use artbox\core\models\Alias; |
| 6 | + use artbox\core\models\Language; | ||
| 6 | use artbox\core\services\Languages; | 7 | use artbox\core\services\Languages; |
| 7 | use yii\helpers\Json; | 8 | use yii\helpers\Json; |
| 8 | use yii\web\NotFoundHttpException; | 9 | use yii\web\NotFoundHttpException; |
| 9 | use yii\web\Request; | 10 | use yii\web\Request; |
| 10 | 11 | ||
| 12 | + | ||
| 11 | /** | 13 | /** |
| 12 | * Url manager extended to work with aliases and languages | 14 | * Url manager extended to work with aliases and languages |
| 13 | * | 15 | * |
| @@ -69,8 +71,12 @@ | @@ -69,8 +71,12 @@ | ||
| 69 | */ | 71 | */ |
| 70 | public function parseRequest($request) | 72 | public function parseRequest($request) |
| 71 | { | 73 | { |
| 72 | - // $this->checkRedirect($request->url); | 74 | + $redirect = $this->checkRedirect($request->url); |
| 75 | + | ||
| 76 | + if ($redirect !== null) { | ||
| 73 | 77 | ||
| 78 | + \Yii::$app->response->redirect("/" . $redirect->value, 301); | ||
| 79 | + } | ||
| 74 | $request = $this->parseLanguage($request); | 80 | $request = $this->parseLanguage($request); |
| 75 | $path=$request->pathInfo; | 81 | $path=$request->pathInfo; |
| 76 | 82 | ||
| @@ -183,27 +189,37 @@ | @@ -183,27 +189,37 @@ | ||
| 183 | 189 | ||
| 184 | return $request; | 190 | return $request; |
| 185 | } | 191 | } |
| 186 | - | 192 | + |
| 187 | /** | 193 | /** |
| 188 | - * Looks for rule in table(column) `redirect.from` if findes - | 194 | + * Looks for rule in table(column) |
| 195 | + * `redirect.from` if findes - | ||
| 189 | * redirects to `redirect.to` | 196 | * redirects to `redirect.to` |
| 190 | * | 197 | * |
| 191 | * @param string $url | 198 | * @param string $url |
| 192 | */ | 199 | */ |
| 193 | protected function checkRedirect(string $url) | 200 | protected function checkRedirect(string $url) |
| 194 | { | 201 | { |
| 195 | - // $redirect = Redirect::find() | ||
| 196 | - // ->where( | ||
| 197 | - // [ | ||
| 198 | - // 'from' => $url, | ||
| 199 | - // ] | ||
| 200 | - // ) | ||
| 201 | - // ->one(); | ||
| 202 | - // | ||
| 203 | - // if ($redirect) { | ||
| 204 | - // \Yii::$app->response->redirect($redirect->to) | ||
| 205 | - // ->send(); | ||
| 206 | - // } | 202 | + $url1 = parse_url($url); |
| 203 | + | ||
| 204 | + | ||
| 205 | + $string = '{"0":"' . ltrim($url1['path'], "/") . '"'; | ||
| 206 | + if (isset($url1['query'])) { | ||
| 207 | + parse_str($url1['query'], $url1['query']); | ||
| 208 | + $string .= (isset($url1['query']['id'])) | ||
| 209 | + ? ',"id":' . $url1['query']['id'] | ||
| 210 | + : ''; | ||
| 211 | + } | ||
| 212 | + | ||
| 213 | + $string .= '}'; | ||
| 214 | + $alias = Alias::find() | ||
| 215 | + ->where(['route' => $string]) | ||
| 216 | + ->one(); | ||
| 217 | + | ||
| 218 | + return $alias; | ||
| 219 | + | ||
| 220 | + | ||
| 221 | + | ||
| 222 | + | ||
| 207 | } | 223 | } |
| 208 | 224 | ||
| 209 | protected function invalidParams($requestParams){ | 225 | protected function invalidParams($requestParams){ |