Yii2 framework backup
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

132 lines
3.8 KiB

<?php
/**
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
namespace yii\helpers;
use yii\base\InvalidParamException;
use Yii;
/**
* BaseUrl provides concrete implementation for [[Url]].
*
* Do not use BaseUrl. Use [[Url]] instead.
*
* @author Alexander Makarov <sam@rmcreative.ru>
* @since 2.0
*/
class BaseUrl
{
/**
* Returns URL for a route.
*
* @param array|string $route parametrized route or empty string for current URL:
*
* - an empty string: the currently requested URL will be returned;
* - an array: the first array element is considered a route, while the rest of the name-value
* pairs are treated as the parameters to be used for URL creation using [[\yii\web\Controller::createUrl()]].
* For example: `['post/index', 'page' => 2]`, `['index']`.
* In case there is no controller, [[\yii\web\UrlManager::createUrl()]] will be used.
*
* @param boolean $absolute if absolute URL should be created
* @return string the normalized URL
* @throws InvalidParamException if the parameter is invalid.
*/
public static function toRoute($route, $absolute = false)
{
if ($route === '') {
return $absolute ? Yii::$app->getRequest()->getAbsoluteUrl() : Yii::$app->getRequest()->getUrl();
}
if (!is_array($route) || !isset($route[0])) {
throw new InvalidParamException('$route should be either empty string or array containing at least one element.');
}
if (Yii::$app->controller instanceof \yii\web\Controller) {
return $absolute ? Yii::$app->controller->createAbsoluteUrl($route) : Yii::$app->controller->createUrl($route);
} else {
return $absolute ? Yii::$app->getUrlManager()->createAbsoluteUrl($route) : Yii::$app->getUrlManager()->createUrl($route);
}
}
/**
* Returns URL to asset located under webroot
*
* @param string $asset will first be processed by [[Yii::getAlias()]]. If the result is an absolute URL, it will be
* returned without any change further; Otherwise, the result will be prefixed with [[\yii\web\Request::baseUrl]] and returned.
* @param boolean $absolute if URL should be absolute
* @return string
*/
public function toAsset($asset = null, $absolute = false)
{
$route = Yii::getAlias($asset);
if ($route !== '' && ($route[0] === '/' || $route[0] === '#' || strpos($route, '://') || !strncmp($route, './', 2))) {
return $route;
} else {
$result = $absolute ? Yii::$app->getRequest()->getHostInfo() : '';
$result .= Yii::$app->getRequest()->getBaseUrl();
if ($asset !== null) {
$result .= '/' . $asset;
}
return $result;
}
}
/**
* Remembers URL passed
*
* @param string $url URL to remember. Default is current URL.
* @param string $name Name to use to remember URL. Defaults to `yii\web\User::returnUrlParam`.
*/
public function remember($url = null, $name = null)
{
if ($url === null) {
$url = Yii::$app->getRequest()->getUrl();
}
if ($name === null) {
Yii::$app->user->setReturnUrl($url);
} else {
Yii::$app->session->set($name, $url);
}
}
/**
* Returns URL previously saved with remember method
*
* @param string $name Name used to remember URL. Defaults to `yii\web\User::returnUrlParam`.
* @return string URL
*/
public function previous($name = null)
{
if ($name === null) {
return Yii::$app->user->getReturnUrl();
} else {
return Yii::$app->session->get($name);
}
}
/**
* Returns canonical URL for the current page
*
* @return string canonical URL
*/
public function canonical()
{
return Yii::$app->controller->getCanonicalUrl();
}
/**
* Returns home URL
*
* @param boolean $absolute if absolute URL should be returned
* @return string home URL
*/
public function home($absolute = false)
{
$result = $absolute ? Yii::$app->request->getHostInfo() : '';
return $result . Yii::$app->getHomeUrl();
}
}