Moh*_*ali 6 params yii2 yii2-advanced-app
我想Global Params在Yii2中配置.
例如:
Yii :: $ app-> params ['uploadPath'] = Yii :: $ app-> basePath.'/上传/';
Yii :: $ app-> params ['uploadUrl'] = Yii :: $ app-> urlManager-> baseUrl.'/上传/';
当我设置这样的params时:
'uploadPath' => Yii::$app->basePath . '/uploads/',
'uploadUrl' => Yii::$app->urlManager->baseUrl . '/uploads/',
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
注意:尝试获取非对象的属性
我为uploadPath及其工作做了这个:
'uploadPath' => Yii::getAlias('@common') . '/uploads/',
Run Code Online (Sandbox Code Playgroud)
但我无法获取uploadUrl并打印图像.请帮忙,我将如何在params中设置全局uploadUrl.
实际上Yii::$app,在应用配置时,Application对象不存在.确切地说,它是从该配置创建的,然后将运行.
因此,您无法通过配置设置这些参数,并且应该在其他位置执行此操作,例如在应用程序引导期间.
要使用应用程序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/';
}
}
Run Code Online (Sandbox Code Playgroud)
2)将其包含boostrap在应用程序配置的部分中:
'bootstrap' => [
...
'app\components\Bootstrap',
];
Run Code Online (Sandbox Code Playgroud)