2012-04-25 19 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

相关问题