在 Yii 2 中获取基本 URL

2022-08-30 12:22:09

我试图在Yii 2中获取项目的基本URL,但它似乎不起作用。根据此页面,您曾经能够做到:

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

在 Yii 1 中,但似乎 Yii 2 中的方法不再接受参数?

我尝试过在没有true的情况下这样做,例如:

Yii::$app->getBaseUrl();

但它只是返回空的。

你怎么能在 Yii 2 中做到这一点?


答案 1

要获取应用程序的基本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()。应用程序::$homeUrl默认使用基本URL,但它可以很容易地更改(例如)因此您不应该依赖于它总是返回基本URL的假设。如果有特殊方法可以获取基本 URL,请使用它。https://example.com/myapp/homeUrl::base()


答案 2

我的猜测是,你需要看看别名。

使用别名是这样的:

Yii::getAlias('@web');

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

Yii::$app->homeUrl;

Url::base();

推荐