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');