Yii2表单,包含多个字段,包括文件上载

Yii2表单,包含多个字段,包括文件上载,yii2,Yii2,问题:无法将图像和文本同时保存到数据库中。 我有一个名为“image”的数据库表。它有“bird_id”、“name”和“filename”列。上载文件的名称将存储在“名称”中。我试图通过ActiveForm收集所有这些数据。 在模型文件(TestTable.php)中: 在视图文件(input.php)中: 我尝试了表单中的多个简单字段,一切都正常! 收集只是图像也工作 尝试将UploadedFile实例保存为非对象变量 $image = UploadedFile::getInstance($

问题:无法将图像和文本同时保存到数据库中。 我有一个名为“image”的数据库表。它有“bird_id”、“name”和“filename”列。上载文件的名称将存储在“名称”中。我试图通过ActiveForm收集所有这些数据。 在模型文件(TestTable.php)中:

在视图文件(input.php)中:

我尝试了表单中的多个简单字段,一切都正常!
收集只是图像也工作

尝试将UploadedFile实例保存为非对象变量

$image = UploadedFile::getInstance($model, 'about');
然后,您可以将文件名保存在模型对象中(我在项目中使用随机字符串,但您可以根据需要进行更改)

现在,您可以将模型保存在数据库中:

if($model->save()) {
    $image->saveAs('path/to/img/folder/'.$model->about);
我就是这样做的,效果很好。希望这也能帮助你的项目

public function actionInput()
{
$model = new TestTable();
if(Yii::$app->request->isPost){
    $model->load(Yii::$app->request->post());
    $model->about = UploadedFile::getInstance($model,'about');
    if($model->save()){
        $model->about->saveAs('images/1.jpg');
    }
    return $this->redirect(['bird/index']);
}       
return $this->render('input',['model'=>$model]);
}
$image = UploadedFile::getInstance($model, 'about');
$ext = end(explode('.', $image->name));
$model->about = Yii::$app->security->generateRandomString().".{$ext}";
if($model->save()) {
    $image->saveAs('path/to/img/folder/'.$model->about);