Как настроить глобальный uploadPath и uploadUrl в Yii2?
Я хочу, чтобы настроить Global Params
в коде с Yii2.
например это:
- это сохранит путь сервера для всех ваших загрузок файлов.
в Yii::$приложения->параметр params['uploadPath'] = в Yii::$приложения->базового маршрута . '/uploads/';
- это сохранит 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',
];