2011-09-30 89 views
7

當我做如何設置基本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的文件夾中即可,如自述文件中提到的那樣。 –

回答

12

正如該論壇中的帖子所述,它可能因不同的平臺而不同,或者如果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項目,所以我不知道。但我會問我的團隊。爲什麼你認爲我得到了上面的輸出? –

2

這很可能是空白的,因爲您的引導文件(index.php)位於您的web根目錄。如果不是,你應該看到一些價值。改變它會挫敗它的目的。

你會使用像:

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

這對於大多數情況下不會改變路徑,但如果你這樣做,比方說,決定把你的Yii應用的子目錄裏面,那麼這將是便攜。 (只需刪除上面的http方法和主機名,以使其在用戶所在的主機上工作。)

1

的Yii ::應用程序() - >的baseUrl從URL返回只是相對路徑到index.php 例如: 127.0.0.1/index.php返回 '' 127.0.0.1/yii/index.php返回'/ yii'

31

您可以編輯/path/to/application/protected/config/main.php更改默認值。添加請求組件,並配置baseUrl屬性。

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

很高興我發現這....我試圖在頂級數組中設置基礎URL。謝謝。 –

0

如果您使用網址幫手生成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

0

嘗試echo Yii::$app->baseUrl(true)
請注意,真正的參數是什麼需要。