2012-04-25 54 views
4

如何定義一個UPLOAD_DIR常數(或等效值),以便我可以在任何地方使用它?如何定義應用程序中隨處可用的全局常量?

我想這爲應用程序的配置參數

'params'=>array(
      'upload_dir'=>Yii::app()->baseUrl . '/images/uploads/', 
), 

Yii::app()->baseUrl cannott配置文件內使用。

+3

你在這裏混合目錄和URL路徑。最佳做法是定義它們兩個。 路徑也可以使用別名創建,但這必須是您的慣例。 – schmunk 2012-04-25 12:27:24

回答

12

你可以做到這裏面index.php,呼叫後Yii::createApplicationYii::app()->run()前:

define ('UPLOAD_DIR', Yii::app()->baseUrl . '/images/uploads/'); 

你會再使用它就像任何其他的PHP常量,例如echo UPLOAD_DIR

編輯:當我createApplication後表示和run之前,我的意思正是(也,不存在既是createWebApplicationcreateApplication,後者是前者的更一般化的版本)。

因此,如果您目前有

Yii::createWebApplication(...)->run(); 

,你必須把它分成

Yii::createWebApplication(...); 
define ('UPLOAD_DIR', Yii::app()->baseUrl . '/images/uploads/'); 
Yii::app()->run(); 

另一種選擇是隻另一個屬性添加到您的應用程序類。例如,如果你有一個class MyApplicationprotected/components目錄中,那麼你可以簡單地這樣做:

class MyApplication extends CWebApplication { 
    // ...other code... 
    public function getUploadDir() { 
     return $this->baseUrl.'/images/uploads/'; 
    } 
} 

你會再訪問此爲Yii::app()->uploadDir

+0

索引文件中的define()不起作用我在Yii :: createWebApplication($ config) - > run();之後嘗試了它。 – safiot 2012-04-25 11:52:48

+0

在我的保護/組件中,只有UserIdentity.php和Controller.php – safiot 2012-04-25 11:57:13

+0

@safiot:請參閱編輯。如果您有一個*,則應用程序類位於'/ protected/components' *內部;否則你需要自己創建*和*你需要使用'createApplication'而不是'createWebApplication'。 – Jon 2012-04-25 11:58:09

相關問題