如何在Yii Framework中设置基本URL

时间:2011-09-30 16:27:32

标签: php yii yii-routing

当我这样做时

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

我得到一个空字符串。 Yii论坛上的帖子说this is blank by default。如何更改其默认值以便我可以使用绝对URL?

7 个答案:

答案 0 :(得分:31)

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

return array(
    ...
    'components' => array(
        ...
        'request' => array(
            'baseUrl' => 'http://www.example.com',
        ),
    ),
);

答案 1 :(得分: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创建了网络应用程序,使用终端yiic webapp /path/to/webapp中的以下命令进行默认设置 这样就可以为Web应用程序以及默认的框架文件生成必要的目录结构。尝试一下,看看它是如何工作的。 我自己也是新来的。

修改

此解决方案可能适用于op,但可以设置baseUrl的正确方法由ecco's answer to this question显示。

答案 2 :(得分:3)

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

您可以使用:

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

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

答案 3 :(得分:1)

Yii :: app() - &gt; baseUrl只返回从url到index.php的相对路径 例如: 127.0.0.1/index.php返回'' 127.0.0.1/yii/index.php返回'/ yii'

答案 4 :(得分:0)

如果您使用Url帮助程序生成网址,则需要将baseUrl密钥设置为UrlManager组件

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

然后您可以使用Url helper as

创建绝对URL

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

使用Yii 2.0.13.1 以下代码工作正常

<?php echo Yii::$app->request->baseUrl; ?>