Jquery 如何在yii2中使用单个操作更新将存储在不同表中的多个映像

Jquery 如何在yii2中使用单个操作更新将存储在不同表中的多个映像,jquery,yii2,image-uploading,Jquery,Yii2,Image Uploading,在此更新操作代码中,仅更新文件夹上的数据和upadte映像,但不更新另一个表tabl4e映像 public function actionUpdate($id) { $model = $this->findModel($id); if ($model->load(Yii::$app->request->post()) && $model->save()) { if ($model->validate()) {

在此更新操作代码中,仅更新文件夹上的数据和upadte映像,但不更新另一个表tabl4e映像

public function actionUpdate($id)
{
    $model = $this->findModel($id);

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        if ($model->validate()) {
            $model->save();
            $cid = $model->id;

            if (isset($_FILES['attr_name']['tmp_name'])) {
                $photos = UploadedFile::getInstancesByName('attr_name');
                $imgName = array();
                if (isset($photos) && count($photos) > 0) {
                    $DD = 0 ;

                    foreach ($photos as $image => $pic) {

                        $imagepath = Yii::getAlias('@image').'/';
                        $imageFileName = rand(10, 100).$pic->name;
                        $imageFile = $imagepath.$imageFileName;
                        if ($pic->saveAs($imageFile)) {
                            $imgName[] = $imageFileName;
                        } else {
                            //echo 'Cannot upload!';
                        }

                        $Image = new Image();
                        $Image->c_id = $cid;
                        $Image->image = $imageFileName;
                        $img = $Image->image;

                        if (isset($_POST['deletedImg'])) {
                            $pics = $_POST['deletedImg'];

                            foreach ($pics as $img1) {
                                $image = $img1;
                                unlink(Yii::getAlias('@image').'/'.$image);
                            }
                        } else {
                            $Image->image = $img;
                        }

                        if ($Image->validate()) {
                            $Image->save();
                        } else {
                            print '<pre>';
                            print_r($Image->errors);
                            exit;
                        }
                        unset($Image);
                    }
                }

                return $this->redirect(['view', 'id' => $model->id]);
            }
        } else {
            return $this->render('create', [
                        'model' => $model,
                    ]);
        }
    } else {
        return $this->render('update', [
            'model' => $model,
        ]);
    }
}
公共功能操作更新($id)
{
$model=$this->findModel($id);
如果($model->load(Yii::$app->request->post())和(&$model->save()){
如果($model->validate()){
$model->save();
$cid=$model->id;
如果(isset($\u文件['attr\u name']['tmp\u name'])){
$photos=上传文件::getInstanceByName('attr_name');
$imgName=array();
如果(设置($photos)和计数($photos)>0){
$DD=0;
foreach($image=>$pic形式的照片){
$imagepath=Yii::getAlias(“@image”)。/”;
$imageFileName=rand(10100)。$pic->name;
$imageFile=$imagepath.$imageFileName;
如果($pic->saveAs($imageFile)){
$imgName[]=$imageFileName;
}否则{
//echo'无法上传!';
}
$Image=新图像();
$Image->c_id=$cid;
$Image->Image=$imageFileName;
$img=$Image->Image;
如果(isset($_POST['deletedImg'])){
$pics=$_POST['deletedImg'];
foreach($pics作为$img1){
$image=$img1;
取消链接(Yii::getAlias(“@image”)./“$image);
}
}否则{
$Image->Image=$img;
}
如果($Image->validate()){
$Image->save();
}否则{
打印“”;
 $(".removeBtn").click(function(event){
    var img =$(this).attr("data-id");
    var id = $(this).attr('id');
    var hiddenfield= '<input type="hidden" value="'+img+'" name="deletedImg[]" id=""/>';
    $("#deleted-img").append(hiddenfield);
    $(this).parent().parent().remove();
}); 
$(".btnAddRec").click(function(){
  var clonedHTML = $( "#fieldsRow" ).html();
  clonedHTML = clonedHTML.replace("<!--BUTTON-->",'<button type="button" class="removeBtn btn btn-xs btn-danger"><i class="glyphicon glyphicon-trash"></i> Delete</button>');
  $("#cloned").append('<div class="row" id="fieldsRow">'+clonedHTML+'</div>');
  $(".removeBtn").click(function(event){
  $(this).parent().parent().remove();
});
$("#cloned #fieldsRow:last-child input ").val('');
});
打印($Image->errors); 出口 } 未设置($图像); } } 返回$this->redirect(['view','id'=>$model->id]); } }否则{ 返回$this->render('create'[ 'model'=>$model, ]); } }否则{ 返回$this->render('update'[ 'model'=>$model, ]); } }
jQuery 在这段代码中会得到多个文件按钮并存储和删除多个图像,我得到的是删除图像id,如何在更新操作中使用这个id,我没有任何想法

namespace app\models;

use yii\base\Model;
use yii\web\UploadedFile;

class UploadForm extends Model
{
    /**
     * @var UploadedFile[]
     */
    public $imageFiles;

    public function rules()
    {
        return [
            [['imageFiles'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg', 'maxFiles' => 4],
        ];
    }

    public function upload()
    {
        if ($this->validate()) { 
            foreach ($this->imageFiles as $file) {
                $file->saveAs('uploads/' . $file->baseName . '.' . $file->extension);
            }
            return true;
        } else {
            return false;
        }
    }
}
$(“.removeBtn”)。单击(函数(事件){
var img=$(this.attr(“数据id”);
var id=$(this.attr('id');
var hiddenfield='';
$(“#删除的img”).append(hiddenfield);
$(this.parent().parent().remove();
}); 
$(“.btnAddRec”)。单击(函数(){
var clonedHTML=$(“#fieldsRow”).html();
clonedHTML=clonedHTML.replace(“,”Delete');
$(“#克隆”).append(“”+clonedHTML+“”);
$(“.removeBtn”)。单击(函数(事件){
$(this.parent().parent().remove();
});
$(“#克隆#字段箭头:最后一个子输入”).val(“”);
});

您确实应该首先开始重构代码

例如,您尝试删除循环中的图像,每次迭代上载的图像;将图像文件名多次指定给图像模型属性,反之亦然,还有未使用的变量(
$DD
?)以及可能更多的变量

但我建议你先看看官方文件。这个用例甚至有一个代码示例:

高级方法:创建一个专用的多图像上传表单(模型),并在此处添加所有上传逻辑

从示例中复制:

模型上传表单

    <?php
use yii\widgets\ActiveForm;
?>

<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>

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

    <button>Submit</button>

<?php ActiveForm::end() ?>
查看(HTML表单) 编辑此项以添加jQuery脚本

namespace app\controllers;

use Yii;
use yii\web\Controller;
use app\models\UploadForm;
use yii\web\UploadedFile;

class SiteController extends Controller
{
    public function actionUpload()
    {
        $model = new UploadForm();

        if (Yii::$app->request->isPost) {
            $model->imageFiles = UploadedFile::getInstances($model, 'imageFiles');
            if ($model->upload()) {
                // file is uploaded successfully
                return;
            }
        }

        return $this->render('upload', ['model' => $model]);
    }
}
公共功能操作更新($id)
{
$model=$this->findModel($id);
如果($model->load(Yii::$app->request->post()){
如果($model->validate())
{
$model->save();
$cid=$model->id;
$Image=Image::find()->where(['c_id'=>$cid])->asArray()->all();
如果(!空($Image)){
如果(isset($_文件['attr_name']['tmp_name'])>0){
如果(isset($_POST['deletedImg']))
{
$pics=$_POST['deletedImg'];
//回显“;打印($pics);退出;
foreach($pics作为$img1)
{
$image=$img1;
取消链接(Yii::getAlias(“@image”)./“$image);
}
$connection=\Yii::$app->db;
$delRec=$connection->createCommand(“从图像中删除图像,其中图像='$image'”);
$delRecExec=$delRec->query();
}
$photos=上传文件::getInstanceByName('attr_name');
$imgName=array();
如果(设置($photos)和计数($photos)>0)
{
foreach($image=>$pic形式的照片){
$imagepath=Yii::getAlias(“@image”)。/”;
$imageFileName=rand(10100)。$pic->name;
$imageFile=$imagepath.$imageFileName;
如果($pic->saveAs($imageFile))
{
$imgName[]=$imageFileName;
}
其他的
{
//echo'无法上传!';
}
$Image=新图像();
//打印($Image);退出;
$Image->c_id=$cid;
public function actionUpdate($id)
{
    $model = $this->findModel($id);

    if ($model->load(Yii::$app->request->post())) {
        if($model->validate())
        {
            $model->save();
            $cid = $model->id;
            $Image = Image::find()->where(['c_id' => $cid])->asArray()->all();

            if(!empty($Image)){
                if(isset($_FILES['attr_name']['tmp_name']) > 0){
                     if(isset($_POST['deletedImg']))
                        {
                            $pics = $_POST['deletedImg'];
                           // echo "<pre>";print_r($pics);exit;
                            foreach($pics as $img1)
                            {
                                $image = $img1;
                                unlink(Yii::getAlias('@image').'/'.$image);
                            }

                            $connection = \Yii::$app->db;
                            $delRec = $connection->createCommand(" delete image FROM image WHERE image='$image'");
                            $delRecExec = $delRec->query();
                        }
                    $photos = UploadedFile::getInstancesByName('attr_name');
                    $imgName = array();
                    if(isset($photos) && count($photos) > 0)
                    {

                       foreach ($photos as $image => $pic) {

                        $imagepath = Yii::getAlias('@image').'/';
                        $imageFileName = rand(10,100).$pic->name;
                        $imageFile = $imagepath.$imageFileName;
                        if ($pic->saveAs($imageFile)) 
                        {
                            $imgName[] = $imageFileName;
                        }
                        else
                        {
                            //echo 'Cannot upload!';
                        }
                            $Image = new Image();
                           // print_r($Image);exit;
                            $Image->c_id = $cid;
                            $Image->image = $imageFileName;
                            $img = $Image->image;

                            if($Image->validate()){
                            $Image->save();
                            }else{
                                print '<pre>';print_r($Image->errors);
                                exit;
                            }
                            unset($Image);
                        }
                    }

                    return $this->redirect(['view', 'id' => $model->id]); 
                }


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