6

我正在开发一个 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()在配置文件中替换并获得相同的结果?

4

1 回答 1

6

你是对的,你不能在配置的返回数组中使用 Yii::app() 方法,但是你可以Yii::getPathOfAlias()在外面使用。像这样的东西可能会起作用:

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

假设webroot是预先定义的。

至于 baseUrl ......我会在那个问题上回复你!

[后退...]

如果你需要一个 url,这一切都取决于你的图像文件保存在哪里,相对于 yii 路径,还是相对于 web 根目录的基础?

如果是 web root 的基础,你可以使用:

return array(
    ...
    'urls'=>array(
        'paths' => array(
            'imageTemp'=> '/files/temp-',
            'image'=> '/files/',
            ...
        ),
    ),
);
于 2012-11-07T12:04:54.277 回答