【问题标题】:Yii2 UploadedFile::getInstance() returns nullYii2 UploadedFile::getInstance() 返回 null
【发布时间】:2023-03-06 14:53:01
【问题描述】:

当我的表单被发送UploadedFile::getInstance($model, 'images') 时返回null。我也试过UploadedFile::getInstanceByName('images')。在$_POST 数组中,images 键为空,例如'images' => ['']。该文件存在于$_FILES 数组中。

我的代码很简单。我的看法:

<?php $form = ActiveForm::begin([
    'options' => [
        'class' => 'validation-wizard wizard-circle floating-labels',
        'enctype'=>'multipart/form-data'
    ],
]); ?>

<?= $form->field($model, 'images[]')->fileInput([
    'id' => 'image_0',
    'class' => 'dropify',
    'data-default-file' => ''
]) ?>

<?php ActiveForm::end() ?>

在我的模型中,我有:

public $images;
public function rules()
{
    return [
        ['images', 'each', 'rule' => ['file']],
    ];
}

【问题讨论】:

  • 为什么你使用images[]而不是images作为字段名?
  • 因为我需要不止一张图片。但也尝试了 whit images 不带括号的单个图像。结果是一样的。
  • 那么你应该使用getInstances()而不是getInstance()
  • 工作就像一个魅力。十分感谢。您可以在下面发布您的答案,以便我批准。

标签: yii2 yii2-advanced-app


【解决方案1】:

如果你想访问一个文件数组,你需要使用UploadedFile::getInstances()而不是UploadedFile::getInstance()

$files = UploadedFile::getInstances($model, 'images');

可以在Uploading Multiple Files 部分的指南中找到处理多个文件的好示例。

【讨论】:

  • 如果从除 YII2 之外的其他表单发送文件,例如从移动应用程序发送文件,请将文件参数名称设置为 UploadForm[] 以使用 UploadedFile::getInstances($model, 'images') , 否则 $file 将为空。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-25
  • 2023-03-15
  • 1970-01-01
相关资源
最近更新 更多