2012-12-19 67 views
6

如何在YII CConsoleApplication應用程序中獲取基礎URL。我嘗試了'Yii :: app() - > request-> getBaseUrl(true)',並且以下面的錯誤結束。在YII Consol應用程序中獲取基礎URL

Undefined index: SERVER_NAME (/var/www/yii/framework/web/CHttpRequest.php:279) 
+0

控制檯中的URL?你能給出一個期望結果的例子嗎? –

回答

10

有一個控制檯應用程序沒有請求對象。在Web應用程序的請求對象其CHttpRequest一個實例,如果你是在一個離線任務生成的URL,您必須配置的baseUrl在一些其他的方式,或許在配置:

"request" => array(
    'hostInfo' => 'http://localhost', 
    'baseUrl' => '/yii-project/index-test.php', 
), 

// OR 

'request' => array(
    'hostInfo' => 'http://localhost', 
    'baseUrl' => '/yii-project', 
    'scriptUrl' => 'index-test.php', 
), 
+0

謝謝,我應該在哪裏放置? –

+0

這應該進入您的控制檯配置文件,在組件部分,通常是保護/ config/console.php – Asgaroth

+3

獲取錯誤試圖設置hostInfo'屬性「CConsoleApplication.request」是隻讀.' – user1954544

-3

請嘗試以下wayt得到基本URL頁面,

echo Yii::app()->getBaseUrl(true); 
+0

文件系統中的應用程序基礎如何與基本URL相關? –

+0

它返回基本路徑而不是基本URL。 –

+0

@Harish Anchu:我編輯了我的代碼請使用... –

3

對於Yii2先進的模板,創建params.php文件,如果它不config目錄控制檯或通用應用程序的存在,並粘貼以下代碼:

return [ 
    'frontendUrl' => 'http://yourdomain.com' 
]; 

因此,它可以通過以下方式在控制檯訪問:

echo Yii::$app->params['frontendUrl']; 
0

你必須在配置增加/ console.php在組件陣列

'request' => array(
    'hostInfo' => 'http://localhost', 
    'baseUrl' => '', 
    'scriptUrl' => '', 
), 

和還要添加urlManager,以便它將刪除index.php?r =站點/動作從URL,你將有漂亮的地址

'urlManager' => array(
    'urlFormat' => 'path', 
    'showScriptName' => false, 
    'rules' => array(
     '<controller:\w+>' => '<controller>/index', 
     '<controller:\w+>/<id:\d+>' => '<controller>/view', 
     '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
     '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
    ), 
),