Yii2 使绝对值 url 成为应用程序的默认值

Yii2 make absolutes url default on application

我正在寻找一种将 UrlManager 组件默认设置为 return 绝对 urls 的方法。我知道我们可以使用 Url::to([], true).

获得绝对 url

有没有一种方法可以自定义组件并使所有 url 绝对化一次?

谢谢

否决默认 Url class.

将 class 放在您项目中的某处。然后将以下行添加到 _bootstrap.php 文件中 common.

Yii::$classMap['yii\helpers\Url'] = dirname(__DIR__) . '/components/Url.php';

Url class:

<?php

namespace yii\helpers;

class Url extends \yii\helpers\BaseUrl {

    // Set the $scheme to be true by default.
    public static function to($url = '', $scheme = true) {
        return parent::to($url, $scheme);
    }

    // Set the $scheme to be true by default.
    public static function toRoute($route, $scheme = true) {
        return parent::toRoute($route, $scheme);
    }
}

通过在 bootstrap 文件中添加这一行,您表示无论您在何处加载 yii\helpers\Url 它都应该指向您自己的文件,而不是框架提供的文件。这将使所有 URL 成为绝对的,甚至是其他小部件(yii\widgets\Menu 或任何东西)生成的。

使用此设置,您仍然可以通过设置 false 建立 URL 亲戚。例如Url::to('/some/route', false)