当我做
print_r(Yii::app()->request->baseUrl)
我得到一个空字符串。Yii 论坛上的一个帖子说默认情况下这是空白的。如何更改其默认值以便可以使用绝对 URL?
您可以编辑 /path/to/application/protected/config/main.php 以更改默认值。添加请求组件,并配置 baseUrl 属性。
return array(
...
'components' => array(
...
'request' => array(
'baseUrl' => 'http://www.example.com',
),
),
);
正如该论坛中的帖子所说,对于不同的平台,或者如果网络应用程序不在默认文件夹中,它可能会有所不同。
所有这些对我有用:
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 的正确方法。
它很可能是空白的,因为您的引导文件 (index.php) 位于您的 Web 根目录中。如果不是,您应该会看到一些价值。改变它会破坏它的目的。
你会像这样使用:
href="<?php echo 'http://www.myhost.com' . Yii::app()->request->baseUrl; ?>/css/screen.css"
这在大多数情况下不会改变路径,但如果你这样做了,比如说,决定将你的 Yii 应用程序放在一个子目录中,那么它将是可移植的。(只需删除上面的 http 方法和主机名,使其在用户所在的同一主机上工作。)
Yii::app()->baseUrl 仅返回从 url 到 index.php 的相对路径,例如: 127.0.0.1/index.php 返回 '' 127.0.0.1/yii/index.php 返回 '/yii'
如果您使用 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
请echo Yii::$app->baseUrl(true)
注意,真正的参数是什么是需要的。
使用 Yii 2.0.13.1 下面的代码工作正常
<?php echo Yii::$app->request->baseUrl; ?>