6

我想Global Params在 Yii2 中配置。

例如这个:

  1. 这将存储所有文件上传的服务器路径。

Yii::$app->params['uploadPath'] = Yii::$app->basePath 。'/上传/';

  1. 这将存储指向您的文件上传的服务器位置的 URL。

Yii::$app->params['uploadUrl'] = Yii::$app->urlManager->baseUrl 。'/上传/';

当我这样设置参数时:

'uploadPath' => Yii::$app->basePath . '/uploads/',
'uploadUrl' => Yii::$app->urlManager->baseUrl . '/uploads/',

我收到此错误:

注意:试图获取非对象的属性

我为 uploadPath 及其工作做了这个:

'uploadPath' => Yii::getAlias('@common') . '/uploads/',

但我无法获取 uploadUrl 并打印图像。请帮忙,我将如何在参数中设置全局 uploadUrl。

4

1 回答 1

8

实际上 Application 对象Yii::$app在应用配置时并不存在。确切地说,它是从该配置创建的,然后将运行。

所以你不能通过配置设置这些参数,应该在其他地方这样做,例如在应用程序引导期间。

要使用应用程序 boostrap 实现这一点:

1)创建自定义类让我们说app\components\Bootstrap

namespace app\components;

use yii\base\BootstrapInterface;

class Bootstrap implements BootstrapInterface
{
    public function bootstrap($app)
    {
        // Here you can refer to Application object through $app variable
        $app->params['uploadPath'] = $app->basePath . '/uploads/';
        $app->params['uploadUrl'] => $app->urlManager->baseUrl . '/uploads/';
    }     
}

2)将其包含boostrap在应用程序配置部分中:

'bootstrap' => [
    ...
    'app\components\Bootstrap',
];
于 2015-03-30T11:41:24.937 回答