4

如何定义一个UPLOAD_DIR常量(或等效项)以便我可以在任何地方使用它?

我尝试将此作为应用程序配置参数

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

Yii::app()->baseUrl不能在配置文件中使用。

4

1 回答 1

13

您可以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 MyApplicationprotected/components那么您可以简单地执行以下操作:

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

然后,您将作为Yii::app()->uploadDir.

于 2012-04-25T11:26:12.737 回答