1

得到

在 null 上调用成员函数 saveAs()

通过文件管理器上传图像时 ajax 请求出错。

配置:

...
'modules' => [
    'site' => [
        'class' => 'app\modules\site\Module',
    ],
    'user' => [
        'class' => 'app\modules\user\Module',
        'controllerNamespace' => 'app\modules\user\controllers\frontend',
        'viewPath' => '@app/modules/user/views/frontend',
    ],
    'admin' => [
        'class' => 'app\modules\admin\Module',
        'layout' => '@app/views/layouts/admin',
        'modules' => [
            'user' => [
                'class' => 'app\modules\user\Module',
                'controllerNamespace' => 'app\modules\user\controllers\backend',
                'viewPath' => '@app/modules/user/views/backend',
            ],
            'pages' => [
                'class' => 'bupy7\pages\Module',
                'controllerNamespace' => 'bupy7\pages\controllers\backend',
                'controllerMap' => [
                    'manager' => [
                        'class' => 'bupy7\pages\controllers\backend\ManagerController',
                    ],
                ],
            ],
            'gallery' => [
                'class' => 'sadovojav\gallery\Module',
                'basePath' => '@webroot/galleries',
            ],
            'filemanager' => [
                'class' => 'pendalf89\filemanager\Module',
                // Upload routes
                'routes' => [
                    // Base absolute path to web directory
                    'baseUrl' => '',
                    // Base web directory url
                    'basePath' => '@webroot',
                    // Path for uploaded files in web directory
                    'uploadPath' => 'uploads',
                ],
                // Thumbnails info
                'thumbs' => [
                    'small' => [
                        'name' => 'Small',
                        'size' => [100, 100],
                    ],
                    'medium' => [
                        'name' => 'Medium',
                        'size' => [300, 200],
                    ],
                    'large' => [
                        'name' => 'Big',
                        'size' => [500, 400],
                    ],
                ],
            ],
        ],
    ],
...

控制器中的 actionUpload()

public function actionUpload()
{

    $model = new Mediafile();
    $routes = $this->module->routes;
    $rename = $this->module->rename;

    $model->saveUploadedFile($routes, $rename);

    Yii::$app->response->format = Response::FORMAT_JSON;

    $tagIds = Yii::$app->request->post('tagIds');

    if ($tagIds !== 'undefined') {
        $model->setTagIds(explode(',', $tagIds));
    }

    $bundle = FilemanagerAsset::register($this->view);

    if ($model->isImage()) {
        $model->createThumbs($routes, $this->module->thumbs);
    }

    $response['files'][] = [
        'url'           => $model->url,
        'thumbnailUrl'  => $model->getDefaultThumbUrl($bundle->baseUrl),
        'name'          => $model->filename,
        'type'          => $model->type,
        'size'          => $model->file->size,
        'deleteUrl'     => Url::to(['file/delete', 'id' => $model->id]),
        'deleteType'    => 'POST',
    ];

    return $response;
}

检查模型,

$this->file = UploadedFile::getInstance($this, 'file');

在 saveUploadedFile() 中返回 null 而不是 object。

问题是函数 saveUploadedFile() 被执行,文件被保存并在数据库中创建记录,但它返回错误。

4

0 回答 0