难以理解Yii2中的多次上载

难以理解Yii2中的多次上载,yii2,Yii2,我有两个表格:征集和档案 征集: 身份证件 名称 描述 创造 文件: 身份证件 征集id, 附件: 创建新请求时,我需要一次上载多个附件,我想知道代码在ACTION RequestationController中的外观,以便将文件发送到上载文件夹,并在文件表中存储名称: public function actionCreate() { $model = new Solicitation(); if ($model->load(Yii::$app->request-&

我有两个表格:征集和档案

征集: 身份证件 名称 描述 创造

文件: 身份证件 征集id, 附件:

创建新请求时,我需要一次上载多个附件,我想知道代码在ACTION RequestationController中的外观,以便将文件发送到上载文件夹,并在文件表中存储名称:

public function actionCreate()
{
    $model = new Solicitation();

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        Yii::$app->session->setFlash('protocolo-success', 'Solicitation Saved!');
        return $this->redirect(['index']);
    } else {
        return $this->render('create', [
            'model' => $model,
        ]);
    }
}
更新

招标模式:

<?php

namespace app\modules\solicitation\models;
use app\models\User;
use Yii;

class Registros extends \yii\db\ActiveRecord
{
    public static function tableName()
    {
        return 'mod_solicitation_records';
    }

    public $files;

    public function rules()
    {
        return [
            [['id','name','location_id','user_id'], 'required'],
            [['description'], 'safe'],
        ];
    }

    public function attributeLabels()
    {
        return [
            'id' => 'Nº Protocolo',
            'name' => 'Nome',
            'description' => 'Descrição',
        ];
    }

    public function getUser()
    {
        return $this->hasOne(User::className(), ['id' => 'user_id']);
    }      

    public function getLocation()
    {
        return $this->hasOne(Location::className(), ['id' => 'location_id']);
    }

}

使用以下命令创建UploadForm模型

不要忘记在下面的模型中更改名称空间“app”,并在控制器中添加以下行

use app\models\UploadForm;
use yii\web\UploadedFile;
现在修改控制器操作,如下所示:

public function actionCreate(){
$model = new Solicitation();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
   $upload = new UploadForm();
   $upload->imageFiles = UploadedFile::getInstances($model, 'imageFiles');
        if ($model->upload()) {
            \Yii::$app->session->setFlash('protocolo-success', 'Solicitation Saved!');
    return $this->redirect(['index']);
        }

} else {
    return $this->render('create', [
        'model' => $model,
    ]);
}}

使用“请求”控制器的创建操作尝试此操作

public function actionCreate() {

    $model = new Registros();
    if ($model->load(Yii::$app->request->post() && $model->save(false))) {
        // SOLICITATION ID 
        $solicitation_id = $model->id;

        $flag = false;
        // GET INSTANCES OF FILE 
        $model->files = \yii\web\UploadedFile::getInstances($model, 'files');

        foreach ($model->files as $file) {
            $file_name = $file->baseName . '.' . $file->extension;
            $flag = $file->saveAs("UPLOAD_FOLDER_BASEPATH/" . $file_name);
            if ($flag) {
                $fileObj = new FILES_MODEL();
                $fileObj->solicitation_id = $solicitation_id;
                $fileObj->attachment = $file_name;
                $fileObj->created = time();
                $fileObj->save(false);
            } else {
                echo "FILE UPLOAD ERROR CODE  : " . $_FILES["file"]["error"];
                exit;
            }
        }
        Yii::$app->session->setFlash('protocolo-success', 'Solicitation Saved!');
        return $this->redirect(['index']);
    } else {
        return $this->render('create', [
                    'model' => $model,
        ]);
    }
}
和查看文件

<?= $form->field($model, 'files[]')->fileInput(['multiple' => true, 'accept' => 'image/*']) ?>


看是的,我已经看到了这个链接。我在“如何循环和写入文件”方面遇到了问题?你可以只上传征集模型的代码吗?Yok,代码更新不起作用。将信息保存在请求表中,但文件保持为空(文件夹中没有上载),请确保php的$\u文件包含文件