GridView 批量刪除需三步驟:加選取框、加按鈕、JS 取得選中鍵值並送 AJAX。
GridView::widget([
'dataProvider' => $dataProvider,
'options' => ['id' => 'grid'], // 關鍵:給 GridView 一個 id
'columns' => [
['class' => 'yii\grid\CheckboxColumn', 'name' => 'id'], // name=id 取主鍵
// ...其他欄位
],
]);
= Html::a('批量刪除', 'javascript:void(0);', ['class' => 'btn btn-success gridview']) ?>
registerJs('
$(".gridview").on("click", function () {
var keys = $("#grid").yiiGridView("getSelectedRows"); // 取得陣列 [1,5,8]
console.log(keys);
// $.post("/batch-delete", {ids: keys}, function(){...});
});
'); ?>'
後端接收 $_POST['ids'] 陣列執行 DELETE WHERE id IN (...) 即可。完整程式碼見文末整合版。