This method will return the contents of $_GET if params where not explicitly set.
public getQueryParams ( ) : array | ||
Результат | array | the request GET parameter values. |
/** * Parses the given request and returns the corresponding route and parameters. * @param UrlManager $manager the URL manager * @param Request $request the request component * @return array|bool the parsing result. The route and the parameters are returned as an array. * If false, it means this rule cannot be used to parse this path info. * @throws NotFoundHttpException */ public function parseRequest($manager, $request) { $this->currentLanguage = Language::getCurrent(); $this->pathInfo = $request->getPathInfo(); if ($this->pathInfo == $this->albumsRoute) { if ($this->disableDefault) { throw new NotFoundHttpException(); } if (!empty($request->getQueryParams()['id'])) { $id = $request->getQueryParams()['id']; $album = GalleryAlbum::findOne($id); if (!$album) { return false; } $translation = $album->getTranslation($this->currentLanguage->id); if ($translation) { if (!empty($translation->seoUrl)) { throw new NotFoundHttpException(); } } } } if (!empty($this->prefix)) { if (strpos($this->pathInfo, $this->prefix) === 0) { $this->pathInfo = substr($this->pathInfo, strlen($this->prefix)); } else { return false; } } $this->initRoutes($this->pathInfo); if (!empty($this->prefix) && $this->routesCount == 1) { return [$this->albumsRoute, []]; } else { if ($this->routesCount == 2) { $seoUrl = $this->routes[1]; /* @var SeoData $seoData */ $seoData = SeoData::find()->where(['entity_name' => GalleryAlbumTranslation::className(), 'seo_url' => $seoUrl])->one(); if ($seoData) { /* @var GalleryAlbum $album */ $album = GalleryAlbum::find()->joinWith('translations translation')->where(['translation.id' => $seoData->entity_id, 'translation.language_id' => $this->currentLanguage->id])->one(); if ($album) { return [$this->albumsRoute, ['id' => $album->id]]; } } } } return false; }
/** * Parses the URL and sets the language accordingly * @param \yii\web\Request $request * @return array|bool */ public function parseRequest($request) { if ($this->enablePrettyUrl) { $pathInfo = $request->getPathInfo(); $language = explode('/', $pathInfo)[0]; $locale = ArrayHelper::getValue($this->aliases, $language, $language); if (in_array($language, $this->languages)) { $request->setPathInfo(substr_replace($pathInfo, '', 0, strlen($language) + 1)); Yii::$app->language = $locale; static::$currentLanguage = $language; } } else { $params = $request->getQueryParams(); $route = isset($params[$this->routeParam]) ? $params[$this->routeParam] : ''; if (is_array($route)) { $route = ''; } $language = explode('/', $route)[0]; $locale = ArrayHelper::getValue($this->aliases, $language, $language); if (in_array($language, $this->languages)) { $route = substr_replace($route, '', 0, strlen($language) + 1); $params[$this->routeParam] = $route; $request->setQueryParams($params); Yii::$app->language = $locale; static::$currentLanguage = $language; } } return parent::parseRequest($request); }
/** * Parses the given request and returns the corresponding route and parameters. * @param UrlManager $manager the URL manager * @param Request $request the request component * @return array|bool the parsing result. The route and the parameters are returned as an array. * If false, it means this rule cannot be used to parse this path info. * @throws NotFoundHttpException */ public function parseRequest($manager, $request) { $this->currentLanguage = Language::getCurrent(); $this->pathInfo = $request->getPathInfo(); if ($this->pathInfo == $this->categoryRoute || $this->pathInfo == $this->productRoute) { Yii::$app->urlManager->language = $this->currentLanguage; if ($this->createUrl(Yii::$app->urlManager, $this->pathInfo, $request->getQueryParams())) { throw new NotFoundHttpException(Yii::t('yii', 'Page not found.')); } else { if ($this->pathInfo == $this->productRoute && empty($request->getQueryParams()['id'])) { throw new NotFoundHttpException(Yii::t('yii', 'Page not found.')); } } } if (!empty($this->prefix)) { if (strpos($this->pathInfo, $this->prefix) === 0) { $this->pathInfo = substr($this->pathInfo, strlen($this->prefix)); } else { return false; } } $this->initRoutes($this->pathInfo); if (!empty($this->prefix) && $this->routesCount == 1) { return [$this->categoryRoute, []]; } $categoryId = null; for ($i = 1; $i < $this->routesCount; $i++) { if ($i === $this->routesCount - 1) { if ($product = $this->findProductBySeoUrl($this->routes[$i], $categoryId)) { return ['/' . $this->productRoute, ['id' => $product->id]]; } else { if ($category = $this->findCategoryBySeoUrl($this->routes[$i], $categoryId)) { return ['/' . $this->categoryRoute, ['id' => $category->id]]; } else { return false; } } } else { if ($category = $this->findCategoryBySeoUrl($this->routes[$i], $categoryId)) { $categoryId = $category->id; } else { return false; } } } return false; }
public function actionSuccesspay() { // vd(['get' => Yii::$app->request->getQueryParams() , // 'post' => Yii::$app->request->getBodyParams()],1); $r = new Request(); //Yii::info(\yii\helpers\Json::encode($requestData), 'apiRequest'); \Yii::info('[DEBUG_ME]' . print_r(['get' => $r->getQueryParams(), 'post' => $r->getBodyParams()], true), 'appDebug'); if ($r->post('action')) { vd(['get' => $r->getQueryParams(), 'post' => $r->getBodyParams()], 1); } $order = Order::findOne($r->post('orderNumber')); if ($order) { } else { vd($order); } $project = $order->project; return $this->render('successpay', ['project' => $project]); }
/** * @param \yii\web\UrlManager $manager * @param \yii\web\Request $request * @return array|bool */ public function parseRequest($manager, $request) { $pathInfo = $request->getPathInfo(); $params = $request->getQueryParams(); $sourceOriginalFile = File::object($pathInfo); $extension = $sourceOriginalFile->getExtension(); if (!$extension) { return false; } if (Validate::validate(new AllowExtension(), $extension)->isInvalid()) { return false; } return ['cms/imaging/process', $params]; }
/** * @param \yii\web\UrlManager $manager * @param \yii\web\Request $request * @return array|bool */ public function parseRequest($manager, $request) { $pathInfo = $request->getPathInfo(); $params = $request->getQueryParams(); $sourceOriginalFile = File::object($pathInfo); $extension = $sourceOriginalFile->getExtension(); if (!$extension) { return false; } if (!in_array(StringHelper::strtolower($extension), (array) \Yii::$app->imaging->extensions)) { return false; } return ['cms/imaging/process', $params]; }
/** * @param \yii\web\UrlManager $manager * @param \yii\web\Request $request * @return array|bool */ public function parseRequest($manager, $request) { $pathInfo = $request->getPathInfo(); $params = $request->getQueryParams(); $treeNode = null; if (!$pathInfo) { return $this->_go(); } //Если урл преобразован, редирректим по новой $pathInfoNormal = $this->_normalizeDir($pathInfo); if ($pathInfo != $pathInfoNormal) { //\Yii::$app->response->redirect(DIRECTORY_SEPARATOR . $pathInfoNormal . ($params ? '?' . http_build_query($params) : '') ); } return $this->_go($pathInfoNormal); }
/** * @param \yii\web\UrlManager $manager * @param \yii\web\Request $request * @return array|bool */ public function parseRequest($manager, $request) { $pathInfo = $request->getPathInfo(); $params = $request->getQueryParams(); $firstPrefix = substr($pathInfo, 0, strlen($this->adminPrefix)); if ($firstPrefix == $this->adminPrefix) { $route = str_replace($this->adminPrefix, "", $pathInfo); if (!$route || $route == "/") { $route = "admin/index"; } $params[self::ADMIN_PARAM_NAME] = self::ADMIN_PARAM_VALUE; return [$route, $params]; //return ["cms/admin-user", $params]; } return false; // this rule does not apply }
/** * @param \yii\web\UrlManager $manager * @param \yii\web\Request $request * @return array|bool */ public function parseRequest($manager, $request) { $pathInfo = $request->getPathInfo(); $params = $request->getQueryParams(); $treeNode = null; if (!$pathInfo) { return false; } if (!preg_match('/\\/(?<id>\\d+)\\-(?<code>\\S+)$/i', "/" . $pathInfo, $matches)) { return false; } //Если урл преобразован, редирректим по новой $pathInfoNormal = $this->_normalizeDir($pathInfo); if ($pathInfo != $pathInfoNormal) { //\Yii::$app->response->redirect(DIRECTORY_SEPARATOR . $pathInfoNormal . ($params ? '?' . http_build_query($params) : '') ); } return ['cms/content-element/view', ['id' => $matches['id'], 'code' => $matches['code']]]; }
/** * Handles the specified request. * @param Request $request the request to be handled * @return Response the resulting response * @throws NotFoundHttpException if the requested route is invalid */ public function handleRequest($request) { if (empty($this->catchAll)) { try { list($route, $params) = $request->resolve(); } catch (UrlNormalizerRedirectException $e) { $url = $e->url; if (is_array($url)) { if (isset($url[0])) { // ensure the route is absolute $url[0] = '/' . ltrim($url[0], '/'); } $url += $request->getQueryParams(); } return $this->getResponse()->redirect(Url::to($url, $e->scheme), $e->statusCode); } } else { $route = $this->catchAll[0]; $params = $this->catchAll; unset($params[0]); } try { Yii::trace("Route requested: '{$route}'", __METHOD__); $this->requestedRoute = $route; $result = $this->runAction($route, $params); if ($result instanceof Response) { return $result; } else { $response = $this->getResponse(); if ($result !== null) { $response->data = $result; } return $response; } } catch (InvalidRouteException $e) { throw new NotFoundHttpException(Yii::t('yii', 'Page not found.'), $e->getCode(), $e); } }
/** * Redirect to the current URL with given language code applied * @param string $language the language code to add. Can also be empty to not add any language code. */ protected function redirectToLanguage($language) { $result = parent::parseRequest($this->_request); if ($result === false) { throw new NotFoundHttpException(Yii::t('yii', 'Page not found.')); } list($route, $params) = $result; if ($language) { $params[$this->languageParam] = $language; } $params = $params + $this->_request->getQueryParams(); array_unshift($params, $route); $url = $this->createUrl($params); if ($this->suffix === '/' && $route === '') { $url = rtrim($url, '/') . '/'; } Yii::$app->getResponse()->redirect($url); if (YII_ENV_TEST) { throw new Exception(Url::to($url)); } else { Yii::$app->end(); } }
/** * @param \yii\web\UrlManager $manager * @param \yii\web\Request $request * @return array|bool */ public function parseRequest($manager, $request) { if ($this->mode === self::CREATION_ONLY) { return false; } if (!empty($this->verb) && !in_array($request->getMethod(), $this->verb, true)) { return false; } $pathInfo = $request->getPathInfo(); if ($this->host !== null) { $pathInfo = strtolower($request->getHostInfo()) . ($pathInfo === '' ? '' : '/' . $pathInfo); } $params = $request->getQueryParams(); $suffix = (string) ($this->suffix === null ? $manager->suffix : $this->suffix); $treeNode = null; if (!$pathInfo) { return false; } if (!preg_match('/\\/(?<id>\\d+)\\-(?<code>\\S+)$/i', "/" . $pathInfo, $matches)) { return false; } return ['cms/content-element/view', ['id' => $matches['id'], 'code' => $matches['code']]]; }
/** * @param \yii\web\UrlManager $manager * @param \yii\web\Request $request * @return array|bool */ public function parseRequest($manager, $request) { if ($this->mode === self::CREATION_ONLY) { return false; } if (!empty($this->verb) && !in_array($request->getMethod(), $this->verb, true)) { return false; } $pathInfo = $request->getPathInfo(); if ($this->host !== null) { $pathInfo = strtolower($request->getHostInfo()) . ($pathInfo === '' ? '' : '/' . $pathInfo); } $params = $request->getQueryParams(); $suffix = (string) ($this->suffix === null ? $manager->suffix : $this->suffix); $treeNode = null; $originalDir = $pathInfo; if ($suffix) { $originalDir = substr($pathInfo, 0, strlen($pathInfo) - strlen($suffix)); } $dependency = new TagDependency(['tags' => [(new Tree())->getTableCacheTag()]]); if (!$pathInfo) { $treeNode = Tree::getDb()->cache(function ($db) { return Tree::find()->where(["site_code" => \Yii::$app->cms->site->code, "level" => 0])->one(); }, null, $dependency); } else { $treeNode = Tree::find()->where(["dir" => $originalDir, "site_code" => \Yii::$app->cms->site->code])->one(); } if ($treeNode) { \Yii::$app->cms->setCurrentTree($treeNode); $params['id'] = $treeNode->id; return ['cms/tree/view', $params]; } else { return false; } }
/** * Parses the given request and returns the corresponding route and parameters. * @param \yii\web\UrlManager $manager the URL manager * @param Request $request the request component * @return array|bool the parsing result. The route and the parameters are returned as an array. * @throws ForbiddenHttpException */ public function parseRequest($manager, $request) { if (!($pathInfo = $request->getPathInfo() or $pathInfo = $this->getMenuMap()->getMainPagePath())) { return false; } //Пункт 2 $this->_activeMenuIds = array_keys($this->getMenuMap()->getLinks(), $request->getUrl()); if ($this->_menu = $this->getMenuMap()->getMenuByPath($pathInfo)) { //Пункт 1.1 $this->_activeMenuIds[] = $this->_menu->id; $this->_menu->setContext(MenuItem::CONTEXT_PROPER); //при полном совпадении метаданные меню перекрывают метаднные контроллера Yii::$app->getView()->on(View::EVENT_BEGIN_PAGE, [$this, 'applyMetaData']); } elseif ($this->_menu = $this->getMenuMap()->getApplicableMenuByPath($pathInfo)) { //Пункт 1.2 $this->_activeMenuIds[] = $this->_menu->id; $this->_menu->setContext(MenuItem::CONTEXT_APPLICABLE); $this->applyMetaData(); } else { return false; } // устанавливаем макет приложению Event::on(Controller::className(), Controller::EVENT_BEFORE_ACTION, [$this, 'applyLayout']); //Проверка на доступ к пунтку меню if (!empty($this->_menu->access_rule) && !Yii::$app->user->can($this->_menu->access_rule)) { if (Yii::$app->user->getIsGuest()) { Yii::$app->user->loginRequired(); } else { throw new ForbiddenHttpException(Yii::t('gromver.platform', 'You have no rights for access to this section of the site.')); } } if ($this->_menu->getContext() === MenuItem::CONTEXT_PROPER) { return $this->_menu->parseUrl(); } else { $requestRoute = substr($pathInfo, mb_strlen($this->_menu->path) + 1); list($menuRoute, $menuParams) = $this->_menu->parseUrl(); $requestInfo = new MenuRequest(['menuMap' => $this->getMenuMap(), 'menuRoute' => $menuRoute, 'menuParams' => $menuParams, 'requestRoute' => $requestRoute, 'requestParams' => $request->getQueryParams()]); foreach ($this->_parseUrlRules as $rule) { if ($result = $rule->process($requestInfo, $this)) { return $result; } } return false; } }
/** * Loads query and post params into the model. * @param ActiveRecord $model * @param Request $request * @return bool true if post params were loaded. */ protected function load($model, $request) { $model->load($request->getQueryParams()); return $model->load($request->getBodyParams()); }
/** * Redirect to the current URL with given language code applied * * @param string $language the language code to add. Can also be empty to not add any language code. * @throws \yii\base\Exception */ protected function redirectToLanguage($language) { $result = parent::parseRequest($this->_request); if ($result === false) { throw new \yii\web\NotFoundHttpException(Yii::t('yii', 'Page not found.')); } list($route, $params) = $result; if ($language) { $params[$this->languageParam] = $language; } // See Yii Issues #8291 and #9161: $params = $params + $this->_request->getQueryParams(); array_unshift($params, $route); $url = $this->createUrl($params); Yii::trace("Redirecting to {$url}.", __METHOD__); Yii::$app->getResponse()->redirect($url); if (YII_ENV_TEST) { // Response::redirect($url) above will call `Url::to()` internally. So to really // test for the same final redirect URL here, we need to call Url::to(), too. throw new \yii\base\Exception(\yii\helpers\Url::to($url)); } else { Yii::$app->end(); } }
public function setRequestParams(Request $request) { $this->requestParams = array_merge($request->getQueryParams(), $request->getBodyParams()); }