当我这样做时
print_r(Yii::app()->request->baseUrl)
我得到一个空字符串。 Yii论坛上的帖子说this is blank by default。如何更改其默认值以便我可以使用绝对URL?
答案 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; ?>