首页 > 作文

YII2框架中ActiveDataProvider与GridView的配合使用操作示例

更新时间:2023-04-08 19:38:10 阅读: 评论:0

本文实例讲述了yii2框架中activedataprovider与gridview的配合使用操作。分享给大家供大家参考,具体如下:

yii2中activedataprovider可以使用yii\db\query或yii\db\activequery的对象,方便我们构造复杂的查询筛选语句。

配合强大的gridview,快速的显示我们想要的数据。

通过上面的两个工具,我们快速的显示用户表信息。用户表结构如下:

我们创建一个用户模型myur.php,代码如下:

<?phpnamespace app\models;u yii\db\activerecord;u yii\data\activedataprovider;class myur extends activerecord{  //返回要操作的表名  public static function tablename()  {    return '{{%ur}}';  }  //设置规则  //注意,如果没有给字段设置规则,gridview的筛选项是不会出现的  public function rules()  {    return [      [['id', 'name', 'x', 'age'], 'trim'],      [['id', 'x', 'age'], 'integer'],      ['name', 'string'],    ];  }  //查询  public function arch($params)  {    //首先我们先获取一个activequery    $query = lf::find();    //然后创建一个activedataprovider对象    $provider = new activedataprovider([      //为activedataprovider对象提供一个查询对象      'query' => $query,      //设置分页参数      'pagination' => [        //分页大小        'pagesize' => 3,        //设置地址栏当前页数参数名        'pageparam' => 'p',        //设置地址栏分页大小参数名        'pagesizeparam' => 'pagesize',      ],      //设置排序      'sort' => [        //默认排序方式        'defaultorder' => [          'id' => sort_desc,        ],        //参与排序的字段        'attributes' => [          'id', 'name', 'x', 'age'        ],      ],    ]);    //如果验证没通过,直接返回    if (!($this->load($params) && $this->validate())) {      return $provider;    }    //增加过滤条件    $query->andfilterwhere(['id' => $this->id])      ->andfilterwhere(安全生产培训内容['like', 'name', $this->name])      ->andfilterwhere(['x' => $this->x])      ->andfilterwhere(['age' => $this->age]);    return $provider;  }}

然后,创建控制器testcontroller.php,代码如如何制作光盘下:

<?phpnamespace app\controllers;u yii;u yii\web\controller;u app\models\myur;class testcontroller extends controller{  public function actiontest()  {    $ur = new myur();    //调用模型arch方法,把get参数传进去    $provider = $ur->arch(yii::$app->request->get());    return $this->render('test', [      'model' => $ur,      'provider' => $provider,    ]);  }}

视图页面test.php,代码如下:

<?phpu yii\helpers\url;u yii\helpers\html;u yii\grid\gridview;?><div id="page-wrapper">  <div class="row">    <div class="col-lg-12">      <button class="btn btn-primary" i注册公司过程d="showlbtn">显示我选中的</button>    </div>  </div>  <div class="row">    <div class="col-lg-12">      <?php echo gridview::widget([        //设置gridview的id        'id' => 'myurgridview',        //设置数据提供器        'dataprovider' => $provider,        //设置筛选模型        'filtermodel' => $model,        'columns' => [          //复选框列          ['class' => 'yii\grid\checkboxcolumn'],          //显示序号列          ['class' => 'yii\grid\rialcolumn'],          [            //设置字段显示标题            'label' => 'id',            //字段名            'a说明文的方法ttribute' => 'id',            //格式化            'format' => 'raw',            //设置单元格样式            'headeroptions' => [              'style' => 'width:120px;',            ],          ],          [            'label' => '姓名',            'attribute' => 'name',            'format' => 'raw',          ],          [            'label' => '头像',            'attribute' => 'head_img',            'format' => 'raw',            //通过该返回值,我们可以任意控制列数据的显示            //$data指向的是当前行的数据结果集            'value' => function ($data) {              return '<img src="' . '/' . ltrim($data->head_img, '/') . '" width="60px">';            },          ],          [            'label' => '性别',            //设置筛选选项            'filter' => [0 => '男', 1 => '女'],            'attribute' => 'x',            'format' => 'raw',            'value' => function ($data) {              return ($data->x == 0) ? '男' : '女';            }          ],          [            'label' => '年龄',            'attribute' => 'age',            'format' => 'raw',          ],          [            'header' => '操作',            'class' => 'yii\grid\actioncolumn',            //设置显示模板            'template' => '{upd} {del}',            //下面的按钮设置,与上面的模板设置相关联            'buttons' => [              'upd' => function ($url, $model, $key) {                return '<a href="' . url::toroute(['test/upd', 'id' => $key]) . '" rel="external nofollow" class="btn btn-warning">修改</a>';              },              'del' => function ($url, $model, $key) {                return '<a href="' . url::toroute(['test/del', 'id' => $key]) . '" rel="external nofollow" cl本科学位证ass="btn btn-danger">删除</a>';              },            ],          ],        ],      ]); ?>    </div>  </div></div><?php echo html::jsfile('@web/js/jquery-3.3.1.min.js'); ?><script type="text/javascript">  $("#showlbtn").on("click", function () {    var keys = $("#myurgridview").yiigridview('getlectedrows');    alert(keys);  });</script>

显示结果如下:

本文发布于:2023-04-08 19:38:08,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/408ef72ad1442718ce3eead20cedb98e.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:YII2框架中ActiveDataProvider与GridView的配合使用操作示例.doc

本文 PDF 下载地址:YII2框架中ActiveDataProvider与GridView的配合使用操作示例.pdf

标签:分页   字段   对象   参数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图