getUrl() public method

This refers to the portion of the URL that is after the [[hostInfo]] part. It includes the [[queryString]] part if any.
public getUrl ( ) : string
return string the currently requested relative URL. Note that the URI returned is URL-encoded.
 public function getUrl()
 {
     if ($this->langUrl === null) {
         $this->langUrl = parent::getUrl();
         $this->originalUrl = $this->langUrl = parent::getUrl();
         $scriptName = '';
         if (strpos($this->langUrl, $_SERVER['SCRIPT_NAME']) !== false) {
             $scriptName = $_SERVER['SCRIPT_NAME'];
             $this->langUrl = substr($this->langUrl, strlen($scriptName));
         }
         Yii::$app->getModule('radiata')->getActiveLanguageByUrl($this->langUrl);
         if (Yii::$app->getModule('radiata')->activeLanguage->code) {
             Yii::$app->language = Yii::$app->getModule('radiata')->activeLanguage->locale;
             if (Yii::$app->getModule('radiata')->activeLanguage->code != Yii::$app->getModule('radiata')->defaultLanguage->code) {
                 $this->langUrl = substr($this->langUrl, strlen(Yii::$app->getModule('radiata')->activeLanguage->code) + 1);
             }
         }
         if (!$this->langUrl) {
             $this->langUrl = $scriptName . '/';
         }
     } else {
         $this->langUrl = parent::getUrl();
     }
     return $this->langUrl;
 }
Example #2
0
 /**
  * @param \yii\web\Request $request
  * @return bool
  */
 public function validateParams(Request $request)
 {
     if ($this->signKey !== null) {
         $httpSignature = $this->getHttpSignature();
         $path = urldecode(parse_url($request->getUrl(), PHP_URL_PATH));
         parse_str(parse_url($request->getUrl(), PHP_URL_QUERY), $urlParams);
         if (isset($urlParams['_'])) {
             unset($urlParams['_']);
         }
         try {
             $httpSignature->validateRequest($path, $urlParams);
         } catch (SignatureException $e) {
             return false;
         }
     }
     return true;
 }
Example #3
0
 /**
  * @param \yii\web\Request $request
  * @return \yii\web\Response|null
  */
 protected function handleRedirectRequest($request)
 {
     $key = ltrim(str_replace($request->getBaseUrl(), '', $request->getUrl()), '/');
     if (array_key_exists($key, $this->redirectRoutes)) {
         return $this->getResponse()->redirect(Url::to($this->redirectRoutes[$key]));
     } else {
         return null;
     }
 }
Example #4
0
 /**
  * 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|boolean 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.
  */
 public function parseRequest($manager, $request)
 {
     echo '<pre>==== BeeUrlRule ===<br>';
     print_r('PathInfo = ' . $request->getPathInfo());
     echo '<br>';
     print_r('Url = ' . $request->getUrl());
     echo '<br>======================</pre>';
     $items = Yii::$app->getSiteMenu()->getMenu();
     // Parse SEF URL
     if (Yii::$app->urlManager->enablePrettyUrl == TRUE) {
         $route = $request->getPathInfo();
         /*
          *  Пошаговый парсинг меню
          *  Последне найденный записывается в переменную $found
          */
         $found = null;
         foreach ($items as $item) {
             if ($item->path && BeeString::strpos($route, $item->path) === 0) {
                 // Exact route match. We can break iteration because exact item was found.
                 if ($item->path == $route) {
                     $found = $item;
                     break;
                 }
                 // Partial route match. Item with highest level takes priority.
                 if (!$found || $found->level < $item->level) {
                     $found = $item;
                 }
             }
         }
         /*
          * Если мы нашли конечный пункт меню и его адрес полностью собпадает,
          * то формируем и возвращаем ссылку на этот пункт меню
          * иначе берем компонент в @found и продолжаем поиск уже по этому компоненту.
          */
         if (BeeString::strpos($route, $found->path) === 0) {
             $extAction = $found->query[0];
             // site/index
             $url = ['path' => $found->query['path'], 'id' => $found->query['id']];
             return [$extAction, $url];
         } else {
             echo '<pre>';
             print_r('------------------- Еще не все распарсил -------------------');
             echo '</pre>';
         }
         //echo '<br><br><br><pre>';
         //print_r($found);
         //echo '</pre><br><br><br>';
         echo '<br><pre>Сделать парсинг для страниц, отсутствующих в меню';
         echo '<br>======================</pre>';
     } else {
         // Parse RAW URL
         return FALSE;
     }
     echo '<pre><<< Стандартный парсино Yii >>></pre>';
     return FALSE;
     //return ['site/about', []];
 }
Example #5
0
 /**
  * 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;
     }
 }
Example #6
0
use yii\helpers\ArrayHelper;
use yii\helpers\FileHelper;
use yii\web\Request;
require __DIR__ . '/../../vendor/autoload.php';
require __DIR__ . '/../../vendor/yiisoft/yii2/Yii.php';
require __DIR__ . '/../../common/config/bootstrap.php';
$config = yii\helpers\ArrayHelper::merge(require __DIR__ . '/../../common/config/main.php', require __DIR__ . '/../../common/config/main-local.php');
$request = new Request();
$request->init();
$imageCacheConfig = $config['components']['imageCache'];
/**
 * @var maddoger\imagecache\ImageCache $imageCache
 */
$imageCache = Yii::createObject($imageCacheConfig);
$cachedUrl = $request->getUrl();
$preg = '/^' . preg_quote(Yii::getAlias($imageCache->cacheUrl), '/') . '\\/(.*?)\\/(.*?)\\.(.*?)$/';
if (preg_match($preg, $cachedUrl, $matches)) {
    $presetName = $matches[1];
    if (!$imageCache->hasPreset($presetName)) {
        header('HTTP/1.0 400 Bad Request');
        exit('Preset not found.');
    }
    $imagePath = Yii::getAlias($imageCache->staticPath . DIRECTORY_SEPARATOR . $matches[2] . '.' . $matches[3]);
    $format = strtolower($matches[3]);
    if (file_exists($imagePath)) {
        try {
            $image = $imageCache->getImage($imagePath, $presetName);
            if ($image && $image->isValid()) {
                $preset = $imageCache->presets[$presetName];
                $saveOptions = ArrayHelper::merge($imageCache->saveOptions, ArrayHelper::remove($preset, 'save', []));