我想在Yii2中配置Global Params
。
例如:
Yii :: $ app-> params ['uploadPath'] = Yii :: $ app-> basePath。 '/上传/';
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并打印图像。请帮忙,我将如何在params中设置全局uploadUrl。
答案 0 :(得分:8)
实际上,在应用配置时,应用程序对象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',
];