怎么在YII2框架中使用ActiveDataProvider和GridView
作者
这篇文章给大家介绍怎么在YII2框架中使用ActiveDataProvider和GridView,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
具体如下:
YII2中ActiveDataProvider可以使用yii\db\Query或yii\db\ActiveQuery的对象,方便我们构造复杂的查询筛选语句。
配合强大的GridView,快速的显示我们想要的数据。
通过上面的两个工具,我们快速的显示用户表信息。用户表结构如下:
我们创建一个用户模型MyUser.php,代码如下:
<?php namespaceapp\models; useyii\db\ActiveRecord; useyii\data\ActiveDataProvider; classMyUserextendsActiveRecord { //返回要操作的表名 publicstaticfunctiontableName() { return'{{%user}}'; } //设置规则 //注意,如果没有给字段设置规则,GridView的筛选项是不会出现的 publicfunctionrules() { return[ [['id','name','sex','age'],'trim'], [['id','sex','age'],'integer'], ['name','string'], ]; } //查询 publicfunctionsearch($params) { //首先我们先获取一个ActiveQuery $query=self::find(); //然后创建一个ActiveDataProvider对象 $provider=newActiveDataProvider([ //为ActiveDataProvider对象提供一个查询对象 'query'=>$query, //设置分页参数 'pagination'=>[ //分页大小 'pageSize'=>3, //设置地址栏当前页数参数名 'pageParam'=>'p', //设置地址栏分页大小参数名 'pageSizeParam'=>'pageSize', ], //设置排序 'sort'=>[ //默认排序方式 'defaultOrder'=>[ 'id'=>SORT_DESC, ], //参与排序的字段 'attributes'=>[ 'id','name','sex','age' ], ], ]); //如果验证没通过,直接返回 if(!($this->load($params)&&$this->validate())){ return$provider; } //增加过滤条件 $query->andFilterWhere(['id'=>$this->id]) ->andFilterWhere(['like','name',$this->name]) ->andFilterWhere(['sex'=>$this->sex]) ->andFilterWhere(['age'=>$this->age]); return$provider; } }
然后,创建控制器TestController.php,代码如下:
<?php namespaceapp\controllers; useYII; useyii\web\Controller; useapp\models\MyUser; classTestControllerextendsController { publicfunctionactionTest() { $user=newMyUser(); //调用模型search方法,把get参数传进去 $provider=$user->search(YII::$app->request->get()); return$this->render('test',[ 'model'=>$user, 'provider'=>$provider, ]); } }
视图页面test.php,代码如下:
<?php useyii\helpers\Url; useyii\helpers\Html; useyii\grid\GridView; ?> <divid="page-wrapper"> <divclass="row"> <divclass="col-lg-12"> <buttonclass="btnbtn-primary"id="showSelBtn">显示我选中的</button> </div> </div> <divclass="row"> <divclass="col-lg-12"> <?phpechoGridView::widget([ //设置GridView的ID 'id'=>'myUserGridView', //设置数据提供器 'dataProvider'=>$provider, //设置筛选模型 'filterModel'=>$model, 'columns'=>[ //复选框列 ['class'=>'yii\grid\CheckboxColumn'], //显示序号列 ['class'=>'yii\grid\SerialColumn'], [ //设置字段显示标题 'label'=>'ID', //字段名 'attribute'=>'id', //格式化 'format'=>'raw', //设置单元格样式 'headerOptions'=>[ 'style'=>'width:120px;', ], ], [ 'label'=>'姓名', 'attribute'=>'name', 'format'=>'raw', ], [ 'label'=>'头像', 'attribute'=>'head_img', 'format'=>'raw', //通过该返回值,我们可以任意控制列数据的显示 //$data指向的是当前行的数据结果集 'value'=>function($data){ return'<imgsrc="'.'/'.ltrim($data->head_img,'/').'"width="60px">'; }, ], [ 'label'=>'性别', //设置筛选选项 'filter'=>[0=>'男',1=>'女'], 'attribute'=>'sex', 'format'=>'raw', 'value'=>function($data){ return($data->sex==0)?'男':'女'; } ], [ 'label'=>'年龄', 'attribute'=>'age', 'format'=>'raw', ], [ 'header'=>'操作', 'class'=>'yii\grid\ActionColumn', //设置显示模板 'template'=>'{upd}{del}', //下面的按钮设置,与上面的模板设置相关联 'buttons'=>[ 'upd'=>function($url,$model,$key){ return'<ahref="'.Url::toRoute(['test/upd','id'=>$key]).'"rel="externalnofollow"class="btnbtn-warning">修改</a>'; }, 'del'=>function($url,$model,$key){ return'<ahref="'.Url::toRoute(['test/del','id'=>$key]).'"rel="externalnofollow"class="btnbtn-danger">删除</a>'; }, ], ], ], ]);?> </div> </div> </div> <?phpechoHtml::jsFile('@web/js/jquery-3.3.1.min.js');?> <scripttype="text/javascript"> $("#showSelBtn").on("click",function(){ varkeys=$("#myUserGridView").yiiGridView('getSelectedRows'); alert(keys); }); </script>
显示结果如下:
关于怎么在YII2框架中使用ActiveDataProvider和GridView就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
目录
推荐阅读
-
怎么在Yii2中实现关联查询
今天就跟大家聊聊有关怎么在Yii2中实现关联查询,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据...
-
怎么在YII2框架中利用UEditor编辑器发布文章
今天就跟大家聊聊有关怎么在YII2框架中利用UEditor编辑器发布文章,可能很多人都不太了解,为了让大家更加了解,小编给大家总结...
-
如何在YII2框架中使用behavior
-
怎么在YII2框架中使用RBAC控制模块
-
怎么在YII2框架中使用控制台命令
-
如何在YII2框架中使用Query()查询生成器
这篇文章将为大家详细讲解有关如何在YII2框架中使用Query()查询生成器,文章内容质量较高,因此小编分享给大家做个参考,希望大...
-
YII2全局异常处理的示例分析
0 条评论
本站已关闭游客评论,请登录或者注册后再评论吧~