yii2 - How to get checked checkbox values from gridview to controller

Viewed 3730

I need to get checked checkbox value from my view to controller when button is press.

Gridview :

<div class="installment-ready">
<!-- <h1><?= Html::encode($this->title) ?></h1> -->
<?php // echo $this->render('_search', ['model' => $searchModel]); ?>
<?= GridView::widget([
    'dataProvider' => $dataProvider,
    //'filterModel' => $searchModel,
    'columns' => [
    [
    'class' => 'yii\grid\SerialColumn',
    'contentOptions'=>[ 'style'=>'width: 60px'],
    ],
//Checkbox
[
    'class' => 'yii\grid\CheckboxColumn',
    'contentOptions'=>[ 'style'=>'width: 50px'],
    'name' => 'checked',
    'checkboxOptions'=> function($model, $key, $index, $column) {
     return ["value" => $model->ACCOUNT_ID];
    }
],

Button to process selected checkbox:

<?= Html::a('Submit', ['#'], ['class' => 'btn btn-success pull-right']) ?>
2 Answers

In your controller action use below code

Yii::$app->request->post('checked');

I found a solution. I'm using ajax to post selected checkbox to my controller.

Script that I use in my view

<script type="text/javascript">
  // action for all selected rows
  function submit(){
    var dialog = confirm("Are you sure to submit the installment?");
    if (dialog == true) {
        var keys = $('#grid').yiiGridView('getSelectedRows');
        // console.log(keys);
        var ajax = new XMLHttpRequest();
        $.ajax({
            type: "POST",
            url: 'index.php?r=installment/submit', // Your controller action
            data: {keylist: keys},
            success: function(result){
              console.log(result);
            }
          });
    }
  }
</script>
<!-- Submit button -->
<button type="button" onclick="submit()" class="btn btn-success pull-right">Submit</button

And you can use usual Yii::$app->request->post() in controller to get your data.

Related