Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii2:提交表单后文件输入引发错误_Php_Yii2_Active Form - Fatal编程技术网

Php Yii2:提交表单后文件输入引发错误

Php Yii2:提交表单后文件输入引发错误,php,yii2,active-form,Php,Yii2,Active Form,当我点击注册按钮时,我收到以下错误:数组到字符串的转换。 我认为在调用fileInput()方法时会发生错误,但我不知道如何解决它。 这是视图的部分代码 <?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?> <?= $form->field($model, 'passwor

当我点击注册按钮时,我收到以下错误:数组到字符串的转换。 我认为在调用
fileInput()
方法时会发生错误,但我不知道如何解决它。
这是视图的部分代码

<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>

<?= $form->field($model, 'password')->passwordInput() ?>

<?= $form->field($model, 'email') ?>


<?= $form->field($modelUpload, 'imageFile')->fileInput() ?>

<div class="form-group">
    <?= Html::submitButton('Signup', ['class' => 'btn', 'name' => 'signup-button']) ?>
</div>
<?php ActiveForm::end(); ?>

这是控制器的代码:

    <?php

class SiteController extends Controller {

    /**
     * Signs user up.
     *
     * @return mixed
     */
    public function actionSignup() {
        $model = new SignupForm();
        $modelUpload = new UploadForm();
        if ($model->load(Yii::$app->request->post()) && $modelUpload->load(Yii::$app->request->post())) {
            $modelUpload->imageFile = UploadedFile::getInstances($modelUpload, 'imageFile');

            if ($user = $model->signup()) {

                if (Yii::$app->getUser()->login($user) && $modelUpload->upload()) {

                    return $this->goHome();
                }
            }
        }

        return $this->render('signup', [
                    'model' => $model,
                    'modelUpload' => $modelUpload,
        ]);
    }

}
即时解决方案
从下面更改
actionSignup()
中的行

UploadedFile::getInstances($modelUpload, 'imageFile');

原因
您上载的只是一个文件,而不是多个文件,因此
getInstances()
应该是
getInstance()

关于
getInstance
:返回给定模型的上载文件 属性该文件应使用 [\yii\widgets\ActiveField::fileInput()]]

getInstances
:返回给定模型的所有上载文件 属性


请添加特定错误。您应该正确添加堆栈跟踪指定行的源代码不需要添加完整的堆栈跟踪查看这很奇怪从表单中删除
fileInput
时是否有效,您使用的是哪个版本的
Yii2
?第一次提交表单或加载表单时会出现此错误吗?提交后会出现此错误我也爱您@Yosirion
UploadedFile::getInstances($modelUpload, 'imageFile');
UploadedFile::getInstance($modelUpload, 'imageFile');