yii 全选 php,yii2中gridview使用技巧小结(四)——全选等批量操作

在用gridview时,大家都注意到了,列表的开头有现成的复选框,这肯定是批量操作中用到的,今天就来介绍一下,gridview中的批量操作,简直简单的不行,效果图如下:

2b0e06dd0c46abff3f192fd65f53ec5e.png

前端页面只需要改这几个地方即可,

1、gridview设置options时增加一个id 这里我们命名grid。

2.columns增加选项复选框,批量删除必然不可少了复选框操作,这里我们的name值设定为id,方便对数据操作,代码如下'options' =>['id'=>'grid'],

'columns' => [

[

'class' => 'yii\grid\CheckboxColumn',

'name'=>'id',

],//复选框列

3、页面上我们增加一个批量删除按钮,注意这里我们增加了一个class gridviewdelete,方便后面js实现点击效果= Html::a('批量删除', "javascript:void(0);", ['class' => 'btn btn-primary gridviewdelete']) ?>

4、最后一步,写js实现按钮操作,我们很轻松的就拿到了选中的行的id,然后这里就可以异步操作数据了。$script = <<

if(confirm('您确定要删除吗?')){

var keys = $("#grid").yiiGridView("getSelectedRows");

$.ajax({

url: '/food/batchdelete',

data: {ids:keys},

type: 'post',

success: function (t) {

t = JSON.parse(t);

if (t.status == 1) {

window.location.href= window.location.href;

}

},

error: function () {

alert("删除失败!")

}

})

}

});

SCRIPT;

$this->registerJs($script);

?>

5.post传给控制器的是一个数组,这里我写了一个批量操作的方法,一块贴出来,这里的删除为逻辑删除public function actionBatchdelete(){

$this->enableCsrfValidation = false;//去掉yii2的post验证

$ids = Yii::$app->request->post();

$model = new Product();

if($model->batchHandle($ids['ids']))

return \yii\helpers\Json::encode(['status'=>1,'info'=>'删除成功!']);

else

return false;

}

其中batchHandle为批量操作的方法:public function batchHandle($ids = [],$status = 3){

foreach ($ids as $k=>$v){

$model = $this->has(['id'=>$v]);

$model->status = $status;

if(!$model->save(false))

return new BadRequestHttpException('操作失败!');

}

return true;

}

//其中has方法如下:

public function has($where=[], $field='*') {

$result = $this->_query

->select($field)

->where($where)

->one();

return empty($result) ? false : $result;

}

批量操作就这样完成了,是不是很简单,gridview中的一些使用方法也算是总结的差不多了,希望能帮助到大家!该睡觉了!

j_0010.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值