yii2 - Yii2如何配置全局uploadPath和uploadUrl?

标签 yii2 params yii2-advanced-app

我要配置Global Params在 Yii2 中。

例如这个:

  • 这将存储所有文件上传的服务器路径。

  • 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/',
    

    但我无法获取uploadUrl 并打印图像。请帮忙,我将如何在参数中设置全局uploadUrl。

    最佳答案

    实际应用对象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',
    ];
    

    关于yii2 - Yii2如何配置全局uploadPath和uploadUrl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29345064/

    相关文章:

    php - Yii2 独特验证器在插入速度太快时无法工作

    php - 如何部署 Yii2 项目?

    php - 如何在yii2的布局文件main.php中使用find all condition

    Yii2主题集成

    jquery - Fancybox Youtube参数cc_lang_pref不起作用?

    ruby-on-rails - 注册时发生未定义的方法错误

    string - Groovy:没有现成的 stringToMap 吗?

    php - 在 yii2 中设置动态时区

    Yii2 为 AssetBundle 添加条件

    php 要求($文件) : failed to open stream