2016-08-09 2 views
0

Когда я открываю страницу обновления «У меня есть динамические строки, которые сохраняются в БД. Но как я могу управлять, чтобы удалить строки в actionUpdate удалить их в DB.The удаленных элементов в массиве с идентификатором deletedIDsУдаление связанных моделей в 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, 
     ]); 
    } 
} 

и вот моя удалить строку 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

И если вы хотите удалить что-то из БД, было бы лучше использовать другое действие: отправить данные из вашей формы обновления в actionDelet и логику метода изменения в соответствии с вашими потребностями.

+0

получаю информацию массива (4) { [ "_csrf"] => строка (56) "TFM5Tm9hSGM/CXcAIzIhMx0aSBYDEgMuBAFxIw0rDRAtEXEPDSULKw ==" [ "Компонент"] => массив (3) { [ "имя "] => строка (5) "PROBA" [" Instock "] => строка (3) "333" [" tractormodel_id "] => строка (1) "2" } [" идентификаторы "] => массив (1) { [0] => массив (2) { [" id "] => строка (16)« Выбрать компонент » [ "количество"] => строка (0) "" } } [ "deletedIds"] => массив (3) { [0] => строка (2) "15" [1 ] => строка (2) "13" [2] => строка (2) "16" } } – RosS

+0

но должен быть способ сделать это в acitonUpdate, потому что я удалить эти динамически строки если таковые Я хочу, что я создал, когда создаю «компонент». И, как я сказал, удаленные элементы я помещал их в массив, но мне нужен способ удалить их из БД – RosS

+0

, тогда вам нужно добавить в свой код что-то вроде этого : YourModel :: deleteAll (['id' => Y б :: $ app-> request-> сообщение() [ "deletedIds"]]); –

Смежные вопросы