9

当我做

print_r(Yii::app()->request->baseUrl)

我得到一个空字符串。Yii 论坛上的一个帖子说默认情况下这是空白的。如何更改其默认值以便可以使用绝对 URL?

4

7 回答 7

33

您可以编辑 /path/to/application/protected/config/main.php 以更改默认值。添加请求组件,并配置 baseUrl 属性。

return array(
    ...
    'components' => array(
        ...
        'request' => array(
            'baseUrl' => 'http://www.example.com',
        ),
    ),
);
于 2012-06-26T16:04:55.443 回答
12

正如该论坛中的帖子所说,对于不同的平台,或者如果网络应用程序不在默认文件夹中,它可能会有所不同。
所有这些对我有用:

echo Yii::app()->request->baseUrl."<br/>" ;
print_r(Yii::app()->request->baseUrl);
echo "<br/>";
var_dump(Yii::app()->getBaseUrl(true));
echo "<br/>";
echo Yii::app()->request->getBaseUrl(true);

我使用 yiic 创建 Web 应用程序,并在终端中使用以下命令进行默认设置,yiic webapp /path/to/webapp
这样就可以为 Web 应用程序生成必要的目录结构,以及默认的骨架文件。尝试一下,然后看看它是如何工作的。我自己是 yii 的新手。

编辑:

该解决方案可能对 op 有效,但ecco 对这个问题的回答显示了设置 baseUrl 的正确方法。

于 2011-10-01T06:47:46.900 回答
3

它很可能是空白的,因为您的引导文件 (index.php) 位于您的 Web 根目录中。如果不是,您应该会看到一些价值。改变它会破坏它的目的。

你会像这样使用:

href="<?php echo 'http://www.myhost.com' . Yii::app()->request->baseUrl; ?>/css/screen.css"

这在大多数情况下不会改变路径,但如果你这样做了,比如说,决定将你的 Yii 应用程序放在一个子目录中,那么它将是可移植的。(只需删除上面的 http 方法和主机名,使其在用户所在的同一主机上工作。)

于 2011-09-30T20:11:08.427 回答
1

Yii::app()->baseUrl 仅返回从 url 到 index.php 的相对路径,例如: 127.0.0.1/index.php 返回 '' 127.0.0.1/yii/index.php 返回 '/yii'

于 2011-10-09T21:55:09.813 回答
0

如果您使用 Url helper 生成 url,则需要将 baseUrl 键设置为 UrlManager 组件

 'urlManager' => [       
        'baseUrl' => 'http://example.com', 

然后,您可以使用 Url 助手创建绝对 url,

echo Url::to(['site/index', 'src' => 'ref1', '#' => 'name'], true); // output ===> http://example.com/index.php?r=site%2Findex&src=ref1#name

于 2017-02-11T11:26:07.413 回答
0

echo Yii::$app->baseUrl(true)
注意,真正的参数是什么是需要的。

于 2017-04-21T13:08:46.623 回答
0

使用 Yii 2.0.13.1 下面的代码工作正常

<?php echo Yii::$app->request->baseUrl; ?>
于 2018-03-30T04:09:41.470 回答