【问题标题】:Yii2 make absolutes url default on applicationYii2 在应用程序中默认设置绝对 URL
【发布时间】:2018-01-17 11:18:11
【问题描述】:

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

有没有办法自定义组件,它们使所有 url 一次绝对?

谢谢

【问题讨论】:

  • 只需在 Url 类中覆盖方法 to(),它从 Yii 扩展 Url 类?
  • @Yupik 使用代码示例发布正确答案.. 您的评论是一个很好的答案,用户似乎不是专家..
  • @scaisEdge OOP 是 PHP 中的基础,OP 没有提供任何代码尝试,所以评论应该只是激励 OP 做一些研究并向我们展示他的一些努力。
  • @Yupik ..您的意见是正确的..在过去的自学中,参考手册的学习是技术界的普遍做法。今天在我看来,实践模式已经改变,我们从案例中学到的东西比从系统研究中学到的更多。最好的方法是什么?当操作系统等平台不可用时,自学是必要的,今天直接访问互联网资源在多大程度上不是一种自我认可的形式?但是我的只是一个建议。
  • @scaisEdge 嗯,没错,但是从案例中学习并不能成为懒惰的借口:) 如果 OP 只是向我们展示一些自我尝试的努力 - 我很乐意帮助他 :)现在,这里的大多数情况(不是所有的 ofc,也不是完全是这个问题),只是“我想要这个和这个,为我做”,在这里我们只是指出 OP 他应该做什么,如果他尝试并且赢得了一些东西不行 - 我们会修复它;)

标签: php yii2 yii2-advanced-app


【解决方案1】:

覆盖默认的 Url 类。

将下面的类放在项目中的某个位置。然后在公共_bootstrap.php文件中加入下面这行代码。

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

网址类:

<?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);
    }
}

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

使用此设置,您仍然可以通过设置 false 来使 URL 相对。例如Url::to('/some/route', false)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-14
    • 2012-12-28
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多