如何定义一个UPLOAD_DIR常量(或等效项)以便我可以在任何地方使用它?
我尝试将此作为应用程序配置参数
'params'=>array(
'upload_dir'=>Yii::app()->baseUrl . '/images/uploads/',
),
但Yii::app()->baseUrl不能在配置文件中使用。
您可以index.php在调用之后Yii::createApplication和之前在内部执行此操作Yii::app()->run():
define ('UPLOAD_DIR', Yii::app()->baseUrl . '/images/uploads/');
然后,您可以像使用任何其他 PHP 常量一样使用它,例如echo UPLOAD_DIR.
编辑:当我说 aftercreateApplication和 beforerun时,我的意思是准确的(另外,并不是同时存在 acreateWebApplication和 a 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.