如何定義一個UPLOAD_DIR
常數(或等效值),以便我可以在任何地方使用它?如何定義應用程序中隨處可用的全局常量?
我想這爲應用程序的配置參數
'params'=>array(
'upload_dir'=>Yii::app()->baseUrl . '/images/uploads/',
),
但Yii::app()->baseUrl
cannott配置文件內使用。
如何定義一個UPLOAD_DIR
常數(或等效值),以便我可以在任何地方使用它?如何定義應用程序中隨處可用的全局常量?
我想這爲應用程序的配置參數
'params'=>array(
'upload_dir'=>Yii::app()->baseUrl . '/images/uploads/',
),
但Yii::app()->baseUrl
cannott配置文件內使用。
你可以做到這裏面index.php
,呼叫後Yii::createApplication
和Yii::app()->run()
前:
define ('UPLOAD_DIR', Yii::app()->baseUrl . '/images/uploads/');
你會再使用它就像任何其他的PHP常量,例如echo UPLOAD_DIR
。
編輯:當我createApplication
後表示和run
之前,我的意思正是(也,不存在既是createWebApplication
和createApplication
,後者是前者的更一般化的版本)。
因此,如果您目前有
Yii::createWebApplication(...)->run();
,你必須把它分成
Yii::createWebApplication(...);
define ('UPLOAD_DIR', Yii::app()->baseUrl . '/images/uploads/');
Yii::app()->run();
另一種選擇是隻另一個屬性添加到您的應用程序類。例如,如果你有一個class MyApplication
你protected/components
目錄中,那麼你可以簡單地這樣做:
class MyApplication extends CWebApplication {
// ...other code...
public function getUploadDir() {
return $this->baseUrl.'/images/uploads/';
}
}
你會再訪問此爲Yii::app()->uploadDir
。
索引文件中的define()不起作用我在Yii :: createWebApplication($ config) - > run();之後嘗試了它。 – safiot 2012-04-25 11:52:48
在我的保護/組件中,只有UserIdentity.php和Controller.php – safiot 2012-04-25 11:57:13
@safiot:請參閱編輯。如果您有一個*,則應用程序類位於'/ protected/components' *內部;否則你需要自己創建*和*你需要使用'createApplication'而不是'createWebApplication'。 – Jon 2012-04-25 11:58:09
你在這裏混合目錄和URL路徑。最佳做法是定義它們兩個。 路徑也可以使用別名創建,但這必須是您的慣例。 – schmunk 2012-04-25 12:27:24