Yii2如何配置全局uploadPath和uploadUrl?

How to configure global uploadPath and uploadUrl in Yii2?

我想在Yii2中配置Global Params

例如这个:

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

Yii::$app->params['uploadPath'] = Yii::$app->basePath . '/uploads/';

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

Yii::$app->params['uploadUrl'] = Yii::$app->urlManager->baseUrl . '/uploads/';

当我这样设置参数时:

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

我收到这个错误:

Notice: Trying to get property of non-object

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

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

但我无法上传Url 和打印图像。请帮助,我将如何在参数中设置全局上传Url。

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

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

使用应用程序 boostrap 实现:

1) 创建自定义 class 假设名为 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',
];