2016-08-09 6 views
0

「ページを更新」を開くと、DBに保存された動的な行が表示されます。しかし、私はDB.Theでそれらを削除するには、actionUpdate内の行を削除するために管理することができる方法のid deletedIDsyii2で関連するモデルを削除する

public function actionUpdate($id) { 

    $model = Component::find()->where(['id' => $id])->one(); 

    $depModels = Dependency::find()->where(['component_id' => $id])->all(); 

    $tractorModels = ArrayHelper::map(Tractormodel::find()->all(), 'id', 'model'); 

    $components = Component::find()->all(); 


    if ($model->load(Yii::$app->request->post()) && $model->save()) { 

     $dependendComponents = Yii::$app->request->bodyParams['ids']; 
     foreach ($dependendComponents as $dComp) { 

      $dependencyModel = new Dependency(); 
      $dependencyModel->setAttributes([ 
       'count' => $dComp['quantity'], 
       'component_id' => $model->id, 
       'dependent_id' => $dComp['id'] 
      ]); 
      $dependencyModel->save(); 
     } 

     return $this->redirect(['index', 'id' => $model->id]); 
    } else { 
     return $this->render('update', [ 
        'model' => $model, 'tractorModels' => $tractorModels, 
        'components' => $components, 'depModels' => $depModels, 
     ]); 
    } 
} 

、ここで私の削除行jQueryの「_form」である

を配列している項目を削除
wrapper.on("click", ".remove_field", function (e) { 

     var wantedDiv = $(this).parent('div').children().first(); 
     var selectTag = $(wantedDiv).find('select'); 

     var clickedId = $(selectTag).find('[selected=""]').attr('value'); 

     var deletedIdsArray = $('#deletedIDs'); 

     console.log($('#deletedIDs')); 

     if (clickedId) { 
      $('#deletedIds').append('<input type="hidden" name="deletedIds[]" value="' + clickedId + '">'); 
     } 

     e.preventDefault(); 
     $(this).parent('div').remove(); 
     x--; 
    }); 

答えて

0

あなたはYii :: $ app-> request-> post() で何が得られるかを調べる必要があります。var_dump(Yii :: $ app-> request-> post())を試してください。 入力フォームがない場合は、入力フォームを変更する必要があります。 http://www.yiiframework.com/doc-2.0/guide-input-forms.html

DBから何かを削除したい場合は、別のアクションを使用する方がよいでしょう:フォームを更新してactionDeletにデータを送信し、必要に応じてメソッドロジックを変更してください。

+0

I情報 アレイ(4){ [ "_csrf"] => ストリング(56) "TFM5Tm9hSGM/CXcAIzIhMx0aSBYDEgMuBAFxIw0rDRAtEXEPDSULKw ==" [ "コンポーネント"] => アレイ(3){ [ "名前を受け取ります"] => 列(5) "proba" [" INSTOCK "] => 列(3) "333" [" tractormodel_id "] => 列(1) "2" } [" IDS "] => array(1){ [0] => array(2){ [" id "] => 文字列(16)"コンポーネントを選択 " [ "量"] => 列(0) "" } } [ "deletedIds"] => アレイ(3){ [0] => ストリング(2) "15" [1 ] => ストリング(2) "13" [2] => ストリング(2) "16" } } – RosS

+0

私は、これらの動的行もし削除がので、acitonUpdateでそれを行う方法があるはず私は、私が "コンポーネント"を作成したときに作ったと思っています。そして、私は削除されたアイテムを配列の中に入れたようですが、DBからそれらを削除する方法が必要です – RosS

+0

あなたはこのようなコードを追加する必要があります: YourModel :: deleteAll(['id' => Y ii :: $ app-> request-> post()["deletedIds"]]); –

関連する問題