在Yii 2中获取基本URL

Bre*_*ett 29 php yii yii2

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

Yii::app()->getBaseUrl(true);
Run Code Online (Sandbox Code Playgroud)

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

我试过没有真实,例如:

Yii::$app->getBaseUrl();
Run Code Online (Sandbox Code Playgroud)

但它只是空了.

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

Die*_*lus 27

我的猜测是你需要查看别名.

使用别名就像:

Yii::getAlias('@web');
Run Code Online (Sandbox Code Playgroud)

您也可以始终依赖以下两种方法之一:

Yii::$app->homeUrl;

Url::base();
Run Code Online (Sandbox Code Playgroud)

  • `url` btw来自`yii\helpers\Url` (7认同)
  • 我试过`url :: home(true)`和`url :: base(true)`它们几乎都返回相同的东西,除了`url :: home(true)`包含一个结尾`/`.除此之外有什么区别吗? (4认同)

rob*_*006 24

要获取应用程序的基本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
Run Code Online (Sandbox Code Playgroud)

Url::home() 不应该在这种情况下使用.Application::$homeUrl默认情况下使用基本URL,但它可以很容易地更改(例如https://example.com/myapp/home),因此您不应该依赖于它将始终返回基本URL的假设.如果有一种特殊的Url::base()方法来获取基本URL,那么使用它.


Nov*_*gic 7

像这样使用它:

Yii::$app->getUrlManager()->getBaseUrl()
Run Code Online (Sandbox Code Playgroud)

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

  • @WadeShuler Getters 只是具有一些性能影响的语法糖 - 实际上首选使用方法。在框架核心中,它们几乎每次都被使用。 (4认同)
  • 每当你看到`get`作为函数基名时,它就是一个`getter`函数.意思是你可以这样做:`Yii :: $ app-> urlManager-> baseUrl`.这些函数很丑陋,看起来你不明白getter函数的意义. (3认同)

小智 7

要使用以下方法获取基本URL Yii2:

Url::home(true)
Run Code Online (Sandbox Code Playgroud)