【问题标题】:Illegal offset type in isset or emptyisset 中的非法偏移类型或为空
【发布时间】:2017-08-29 06:40:03
【问题描述】:

当前 PHP 版本:7.1.7

请帮我解决这个问题

isset 中的非法偏移类型或第 113 行为空

我决定将文件上传到我的网站后遇到这个问题

在 C:\xampp\htdocs\archive\vendor\yiisoft\yii2\web\UploadedFile.php 第 113 行:

 public static function getInstanceByName($name)
{
    $files = self::loadFiles();
    return isset($files[$name]) ? new static($files[$name]) : null;
}

如果不清楚,请向我寻求更多解释,谢谢

模型中的此代码

[['file'],'file'],
  • 控制器中的这段代码

                $docfileload = $model->docname;
            $model->file = UploadedFile::getinstancebyname($model,'file');
            $model->file->saveAs('uploads/'.$docfileload.'.'.$model->file->extension);
            $model->save();
    
            //save path in db
            $model->docfile = 'uploads/'.$docfileload.'.'.$model->file->extension;
    

_form 中的这段代码

    <?= $form->field($model,'file')->fileinput(); ?>

一开始我使用了 getInstance(),但我使用 getInstanceByName(),因为这里有问题

error yii2 upload Call to a member function saveAs() on null

【问题讨论】:

  • 你能展示你的代码吗?
  • 您使用的是哪个 PHP 版本?
  • 当前 PHP 版本:7.1.7
  • 你在哪里使用 getInstanceByName 方法?它有什么需要?
  • @KamranKhatti Method getInstance() 正在使用getInstanceByName()

标签: yii yii2 yii2-advanced-app


【解决方案1】:

当您尝试使用对象或数组作为索引键访问数组索引时,会发生非法偏移类型错误。

您的函数定义为 getInstanceByName($name),但您使用 getinstancebyname($model,'file') 调用它

有问题

【讨论】:

  • 你在哪里看到的?
  • 根据你的代码 $name 应该是你数组中的一个键吧?在'return isset($files[$name]) 行之前?新静态($files[$name]):空;'添加一个骰子('密钥'。$name);然后您可以查看您是否实际使用了您认为正在使用的密钥。
  • $name 只是函数 getInstanceByName($name) fome yii2
【解决方案2】:

一开始我用过 $model->file = UploadedFile::getinstancebyname($model,'file');

但正确的是使用 $model->file = UploadedFile::getinstance($model,'file');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多