2016-08-09 66 views
0

Wenn ich Update "Seite" öffne, habe ich dynamisch Zeilen, die in der DB gespeichert sind. Aber wie ich es schaffe können die Zeilen in actionUpdate löschen löschen sie in der DB.The gelöschte Elemente sind in Reihe mit der ID deletedIDsLöschen verwandter Modelle in 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, 
     ]); 
    } 
} 

und hier ist meine Entfernen Reihe JQuery in „_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--; 
    }); 

Antwort

0

Sie müssen schauen, was Sie in Yii erhalten :: $ app-> Anfrage-> Post() Versuchen Sie var_dump (Yii :: $ app-> Anfrage-> post()). Wenn nichts da ist, müssen Sie Ihr Eingabeformular ändern. http://www.yiiframework.com/doc-2.0/guide-input-forms.html

Und wenn Sie etwas aus DB löschen möchten, wäre es besser, eine andere Aktion zu verwenden: Senden Sie Daten von Ihrem Update-Formular an actionDelet und ändern Sie die Methodenlogik entsprechend Ihren Anforderungen.

+0

I Informationen Array (4) { [ "_csrf"] => string (56) "TFM5Tm9hSGM/CXcAIzIhMx0aSBYDEgMuBAFxIw0rDRAtEXEPDSULKw ==" [ "Komponente"] => array (3) { [ "name erhalten "] => string (5) "proba" [" instock "] => string (3) "333" [" tractormodel_id "] => string (1) "2" } [" ids "] => Array (1) { [0] => Feld (2) { [" id "] => string (16)" Komponente auswählen " [ "Menge"] => string (0) "" } } [ "deletedIds"] => array (3) { [0] => Saite (2) "15" [1 =]> string (2) "13" [2] => string (2) "16" } } – RosS

+0

aber es eine Möglichkeit, es in acitonUpdate sein sollte, zu tun, weil es mir diese dynamisch Zeilen löschen, wenn Ich möchte, dass ich gemacht habe, wenn ich eine "Komponente" erstelle. Und wie ich sagte, die gelöschten Objekte habe ich sie in Array, aber brauchen einen Weg, wie Sie sie aus der DB löschen – RosS

+0

dann müssen Sie in Ihrem Code etwas wie das hinzufügen : YourModel :: deleteAll (['id' => Y ii :: $ app-> Anfrage-> post() ["deletedIds"]]); –