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