在 Yii 2 中获取基础 URL

Getting base URL in Yii 2

我正在尝试为 Yii 2 中的项目获取基础 URL,但它似乎不起作用。根据 this page 你曾经能够做到:

Yii::app()->getBaseUrl(true);

在 Yii 1 中,但在 Yii 2 中似乎 that method 不再接受参数?

我试过不用true,比如:

Yii::$app->getBaseUrl();

但它 returns 是空的。

如何在 Yii 2 中做到这一点?

我的猜测是您需要查看别名。

使用别名就像:

Yii::getAlias('@web');

您也可以始终依赖以下两者之一:

Yii::$app->homeUrl;

Url::base();

这样使用:

Yii::$app->getUrlManager()->getBaseUrl()

有关基本、规范、主页 URL 的更多信息: http://www.yiiframework.com/doc-2.0/yii-helpers-url.html

可能您正在寻找这个

Yii::$app->homeUrl

你也可以用这个

Url::base().

或这个

Url::home();

您可以通过以下方式到达基地 URL:

Yii::$app->request->baseUrl

要获取基础 URL Yii2 使用:

Url::home(true)

我搜索了一个解决方案,我们可以像在 codeigniter 中那样做,像路由一样 例如

base_url()
base_url('profile')
base_url('view/12')

我们在 Yii2 中唯一可以做到的方法

<?=Url::toRoute('/profile') ?>

试试这个:

$baseUrl = Yii::$app->urlManager->createAbsoluteUrl(['/']);

试试下面的代码。它应该工作。它将 return base URL name

使用yii\helpers\Url;

Url::home('http') // http://HostName/ 要么 Url::home('https') // https://HostName/

要获取应用程序的基础 URL,您应该使用 yii\helpers\Url::base() 方法:

use yii\helpers\Url;

Url::base();         // /myapp
Url::base(true);     // http(s)://example.com/myapp - depending on current schema
Url::base('https');  // https://example.com/myapp
Url::base('http');   // http://example.com/myapp
Url::base('');       // //example.com/myapp

Url::home() should NOT be used in this case. Application::$homeUrl 默认使用基数 URL,但它可以很容易地改变(例如 https://example.com/myapp/home)所以你不应该依赖它总是 [=22] 的假设=]基地URL。如果有特殊的Url::base()方法获取baseURL,那就用吧

在 yii 1 中这段代码 return 主机名

Yii::app()->getBaseUrl(true);

在yii2下面

Yii::$app->getBaseUrl();

作为 Yii::$app 的方法不存在,它会触发错误消息

Calling unknown method: yii\web\Application::getBaseUrl() 

您可以使用封装了 $_SERVER

的请求 class
Yii::$app->request->hostInfo