Как настроить глобальный uploadPath и uploadUrl в Yii2?

Я хочу, чтобы настроить Global Params в коде с Yii2.

например это:

  1. это сохранит путь сервера для всех ваших загрузок файлов.

в Yii::$приложения->параметр params['uploadPath'] = в Yii::$приложения->базового маршрута . '/uploads/';

  1. это сохранит Url, указывающий на местоположение сервера для загрузки файлов.

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

когда я устанавливаю такие параметры:

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

Я получаю эту ошибку:

Примечание: попытка получить свойство не-объекта

Я сделал это для uploadPath и его работы:

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

но я не могу получить uploadUrl и распечатать изображение. Пожалуйста, помогите, как установить global uploadUrl в params.

1 ответов


на самом деле объект приложения Yii::$app не существует в момент применения конфигурации. Если быть точным, он создан из этой конфигурации, а затем будет запущен.

таким образом, вы не можете установить эти параметры через config и должны сделать это в другом месте, например, во время загрузки приложения.

чтобы реализовать это с помощью приложения 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',
];