我已经使用了这个(引用自 RainLab.Blog 插件),它运行良好:
<button
class="btn btn-default oc-icon-trash-o"
disabled="disabled"
onclick="$(this).data('request-data', {
checked: $('.control-list').listWidget('getChecked')
})"
data-request="onDelete"
data-request-confirm="Are you sure?"
data-trigger-action="enable"
data-trigger=".control-list input[type=checkbox]"
data-trigger-condition="checked"
data-request-success="$(this).prop('disabled', false)"
data-stripe-load-indicator>
Delete all selected
</button>
您可以看到它在onClick
处理程序中使用 jQuery 来获取所有检查的 Id 并将其传递给控制器。
然后在你的控制器中你可以这样做:
public function index_onDelete()
{
if (($checkedIds = post('checked')) && is_array($checkedIds) && count($checkedIds)) {
foreach ($checkedIds as $modelId) {
if ((!$model = Model::find($modelId)))
continue;
$model->delete();
}
Flash::success('Successfully deleted those items.');
}
return $this->listRefresh();
}
只要确保替换model
为您的实际“模型”即可。控制器方法名称上的index_
前缀确保我们onDelete
在索引上下文(显示模型列表的位置)中引用。