当前位置:Gxlcms > php框架 > Yii2框架之ListView小部件的使用方法

Yii2框架之ListView小部件的使用方法

时间:2021-07-01 10:21:17 帮助过:59人阅读

ListView是yii框架中类似GridView,也是用于展示多条数据的小部件,相比GridView,ListView可以更加灵活地设置数据展示的格式。

下面以我自己做的一个使用ListView来展示数据的例子,来简单讲解一下ListView小部件的使用。

首先需要在控制器中new一个数据提供器,传给视图,示例代码如下:

  1. public function actionIndex() {
  2. $dataProvider = new ActiveDataProvider([
  3. 'query' => Diary::find()->orderBy('day'),
  4. 'pagination' => [//分页
  5. 'pagesize' => 4
  6. ]
  7. ]);
  8. return $this->render('index', [
  9. 'dataProvider' => $dataProvider
  10. ]);
  11. }

接下来就是在视图文件中使用ListView来展示数据了,示例代码如下:

  1. <?= ListView::widget([
  2. 'dataProvider' => $dataProvider,//数据提供器
  3. 'itemView' => '_diary',//指定item视图(该视图文件与当前视图在同一个目录下)
  4. 'viewParams' => [//传参数给每一个item
  5. 'moodCfg' => Mood::getAll()
  6. ],
  7. 'layout' => '{items}<div class="col-lg-12 sum-pager">{summary}{pager}</div>',//整个ListView布局
  8. 'itemOptions' => [//针对渲染的单个item
  9. 'tag' => 'div',
  10. 'class' => 'col-lg-3'
  11. ],
  12. /*
  13. 'options' => [//针对整个ListView
  14. 'tag' => 'div',
  15. 'class' => 'col-lg-3'
  16. ],
  17. */
  18. 'pager' => [
  19. //'options' => ['class' => 'hidden'],//关闭分页(默认开启)
  20. /* 分页按钮设置 */
  21. 'maxButtonCount' => 5,//最多显示几个分页按钮
  22. 'firstPageLabel' => '首页',
  23. 'prevPageLabel' => '上一页',
  24. 'nextPageLabel' => '下一页',
  25. 'lastPageLabel' => '尾页'
  26. ]
  27. ]);?>

这里说明一下,由于ListView和GridView继承于同一个父类BaseListView,所以有很多设置参数是一样的,可以通过参考GridView的参数设置来设置ListView。

最后就是在ListView的'itemView'参数指定的视图文件中来编写每一条数据的展示格式了,示例代码如下:

  1. <div class="item">
  2. <h4 style="font-weight:bold"><?= Html::encode($model->title ? $model->title : '(无题)') ?></h4>
  3. <p style="font-size:13px">
  4. <span style="color:orangered"><?= date('Y.m.d', $model->day) ?></span><br>
  5. <span style="color:#999">心情:<?= $moodCfg[$model->mood] ?></span>//这里访问ListView的'viewParams'参数传过来的参数$moodCfg
  6. </p>
  7. <div style="margin:15px 0">
  8. <?php echo HtmlPurifier::process(mb_substr($model->content, 0, 25).'......'); ?>
  9. </div>
  10. <p class="info">
  11. 添加:<?= date('Y-m-d H:i:s', $model->created_at) ?><br>
  12. 最后修改:<?= date('Y-m-d H:i:s', $model->updated_at) ?>
  13. </p>
  14. <div style="text-align:right">
  15. <?= Html::a('<span class="glyphicon glyphicon-eye-open"></span>', ['view', 'id' => $model->id], ['title' => '查看']) ?>
  16. <?= Html::a('<span class="glyphicon glyphicon-pencil"></span>', ['upcreate', 'id' => $model->id], ['title' => '修改']) ?>
  17. <?= Html::a('<span class="glyphicon glyphicon-trash"></span>', ['delete', 'id' => $model->id], [
  18. 'title' => '删除',
  19. 'data' => [
  20. 'confirm' => '您确定真的要删除 '.date('Y年m月d日', $model->day).' 的日记吗?',
  21. 'method' => 'post',
  22. ]
  23. ]) ?>
  24. </div>
  25. </div>

最后的最后,效果图展示时间(略丑,勿怪):

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

人气教程排行