Yii2如何配置全局uploadPath和uploadUrl?
How to configure global uploadPath and uploadUrl in Yii2?
我想在Yii2中配置Global Params
例如这个:
- 这将存储您所有文件上传的服务器路径。
Yii::$app->params['uploadPath'] = Yii::$app->basePath . '/uploads/';
- 这将存储 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',
];
我想在Yii2中配置Global Params
例如这个:
- 这将存储您所有文件上传的服务器路径。
Yii::$app->params['uploadPath'] = Yii::$app->basePath . '/uploads/';
- 这将存储 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',
];