2016-08-09 2 views
0

"업데이트"페이지를 열면 동적으로 DB에 저장된 행이 있습니다. 하지만 actionUpdate의 행을 삭제하는 관리 할 수있는 방법가 DB.The에서 삭제하려면yii2에서 관련 모델 삭제

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, 
     ]); 
    } 
} 

여기가 "_form"

내 제거 행 jQuery를하다 항목은 아이디 deletedIDs와 배열에있는 삭제
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() varii (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 "] => 어레이 (1) { [0] => 어레이 (2) { ["id "] => 문자열"(16) "구성 요소 선택,[ "수량"] => 문자열 (0) "," } } [ "deletedIds를"] => 어레이 (3) { [0] => 캐릭터 (2) "15" [1 => 캐릭터 (2) "13" [2] =>이 I 이러한 동적 행 경우를 삭제하기 때문에, acitonUpdate에 할 수있는 방법이 있어야한다 (2) "16" } } – RosS

+0

하지만 문자열 나는 내가 "구성 요소"를 만들 때 만들었습니다. 그리고 삭제 된 항목을 배열에 넣었지만 DB에서 삭제하는 방법이 필요합니다. – RosS

+0

다음과 같이 코드를 추가해야합니다. : YourModel :: deleteAll ([ 'id'=> Y ii :: $ app-> request-> post() [ "deletedIds"]]); –