Yii - 如何在主配置中访问基本URL

时间:2012-11-07 11:41:54

标签: php url path yii

我正在开发一个Yii应用程序。我试图在我的主配置参数中设置一些路径,如下所示:

// application-level parameters that can be accessed
// using Yii::app()->params['paramName']
'params'=>array(
       'paths' => array(
            'imageTemp'=> Yii::getPathOfAlias('webroot').'/files/temp-',
            'image'=> Yii::getPathOfAlias('webroot').'/files/',
            ...
        ),

        'urls' => array(
            'imageTemp'=> Yii::app()->getBaseUrl().'/files/temp-',
            'image'=> Yii::app()->getBaseUrl().'/files/',
            ...
        ),

但是我收到了这个错误:

Fatal error: Call to a member function getBaseUrl() on a non-object in ..blahblah../base/CApplication.php on line 553

我想我不能在配置文件中使用Yii :: app(),因为应用程序尚未在此处初始化,或者类似的东西。那么,如何在配置文件中替换Yii::app()->getBaseUrl()并获得相同的结果呢?

1 个答案:

答案 0 :(得分:5)

你是对的,你不能在config的返回数组中使用Yii :: app()方法,但你可以在外面使用Yii::getPathOfAlias()。这样的事情可能有用:

$webroot = Yii::getPathOfAlias('webroot');
return array(
    ...
    'params'=>array(
        'paths' => array(
            'imageTemp'=> $webroot.'/files/temp-',
            'image'=> $webroot.'/files/',
            ...
        ),
    ),
);

假设事先定义了webroot

至于baseUrl ......我会在那个回复你!<​​/ p>

[返回...]

如果您需要一个网址,这一切都取决于图像文件的保存位置,相对于yii路径,还是相对于网络根目录的基础?

如果是网络根目录的基础,您可以使用:

return array(
    ...
    'urls'=>array(
        'paths' => array(
            'imageTemp'=> '/files/temp-',
            'image'=> '/files/',
            ...
        ),
    ),
);