Выборочное удаление в CGridView на Yii

Предложенный ниже способ позволит добавить в представление CGridView колонку чекбоксов для выбора нескольких удаляемых записей (yii фреймворк).

Добавляем в представление колонку с чекбоксами:

'columns'=>array(
    array(
        'class' => 'CCheckBoxColumn',
        'selectableRows' => 2,
        'value' => '$data["id"]',
        'checkBoxHtmlOptions' => array('name' => 'idList[]'),
    ),
    'content',
    ...
}

В html часть представления добавляем java-скрипт:

<script lang="text/javascript">
    function deleteSelected()
    {
        var idList = $("input[type=checkbox]:checked").serialize();
        if(idList)
        {
            if(confirm("Удалить несколько комментариев?"))
            {
                // Обратите внимание на корректные контроллер и действие:    
                $.post('/comment/delete',idList,function(response){
                    // Здесь необходимо указать id таблицы (грида):
                    $.fn.yiiGridView.update("comment-grid");
                });
            }
        }
    }
</script>

В удобном месте размещаем кнопку:

<input type="button" value="Удалить выбранные" onclick="deleteSelected();" />

А само действие контроллера приводим к виду:

public function actionDelete()
{
    $idList = Yii::app()->request->getParam('idList');
    $allIds = (is_array($idList)) ? implode(',',$idList) : $idLsit;
    // Ниже следует корректно указать название модели:
    $result = Comment::model()->deleteAll('id in ('.$allIds.')');
}

Использованные материалы:

Добавлено: 2015-04-24


Поделиться:

Оставить комментарий

Комментарий появится после одобрения.

Поля со значком * обязательны для заполнения.