我有两张桌子:征集和文件
招揽: ID, 名称, 描述, 创建
FILES: ID, solicitation_id, 附件,
创建新请求时我需要一次上传多个附件,我想知道代码在ACTION SolicitationController中的外观,以便将文件发送到UPLOAD文件夹,并将名称存储在FILES表中:
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']);
}
}
答案 0 :(得分:1)
使用以下link
创建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,
]);
}}
答案 1 :(得分:0)
使用“SOLICITATION”控制器
的创建操作尝试此操作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/*']) ?>