如何设置基本URL在Yii框架

问题描述:

当我做如何设置基本URL在Yii框架

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

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

+0

其中yii版本?和项目所在的目录?它是一个Web应用程序?你有没有使用yiic? –

+0

@DroidUser Yii版本1.1.7。我的目录树是这样的: '/ htdocs/protected /(web应用程序文件)' '/ lib/yii /(yii核心文件)' 这是一个web应用程序。我没有用过伊伊奇。有没有办法通过运行来设置baseUrl?我没有做Yii框架的初始安装。 –

+0

在我的回答中,我已经提到了如何运行yiic,您不必像以上那样安装yii,只需将它放在可访问web的文件夹中即可,如自述文件中提到的那样。 –

正如该论坛中的帖子所述,它可能因不同的平台而不同,或者如果web应用程序未找到在默认文件夹中。
所有这些事情为我工作:

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
所以,对于网络生成必要的目录结构应用程序,也是默认的骨架文件。尝试一下,然后看看它是如何工作的。 我是yii自己的新手。

编辑:

这种解决方案可能已经工作了运算,但正确的方法的baseUrl可以设置由ecco's answer to this question所示。

+0

'var_dump(Yii :: app() - > request-> baseUrl);的var_dump(Yii的::应用程序() - > getBaseUrl(真)); var_dump(Yii :: app() - > request-> getBaseUrl(true));'给我string(0)“”,string(25)“http://www.MYURL.com”, string(25) “http://www.MYURL.com”有趣的 –

+0

你用yiic重新创建你的项目吗?或者你的原始配置有这些,加上'Yii :: app() - > baseUrl'也可以。你有什么感兴趣的 –

+0

我没有开始我们的Yii项目,所以我不知道。但我会问我的团队。为什么你认为我得到了上面的输出? –

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

你会使用像:

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

这对于大多数情况下不会改变路径,但如果你这样做,比方说,决定把你的Yii应用的子目录里面,那么这将是便携。 (只需删除上面的http方法和主机名,以使其在用户所在的主机上工作。)

的Yii ::应用程序() - >的baseUrl从URL返回只是相对路径到index.php 例如: 127.0.0.1/index.php返回 '' 127.0.0.1/yii/index.php返回'/ yii'

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

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

很高兴我发现这....我试图在*数组中设置基础URL。谢谢。 –

如果您使用网址帮手生成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)
请注意,真正的参数是什么需要。