欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-19 09:25:44
listview是yii框架中类似gridview,也是用于展示多条数据的小部件,相比gridview,listview可以更加灵活地设置数据展示的格式。 下面以我自己做...

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

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

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

public function actionindex() {
  $dataprovider = new activedataprovider([
    'query' => diary::find()->orderby('day'),
    'pagination' => [//分页
      'pagesize' => 4
    ]
  ]);
  return $this->render('index', [
    'dataprovider' => $dataprovider
  ]);
}

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

<?= listview::widget([
  'dataprovider' => $dataprovider,//数据提供器
  'itemview' => '_diary',//指定item视图(该视图文件与当前视图在同一个目录下)
  'viewparams' => [//传参数给每一个item
    'moodcfg' => mood::getall()
  ],
  'layout' => '{items}<div class="col-lg-12 sum-pager">{summary}{pager}</div>',//整个listview布局
  'itemoptions' => [//针对渲染的单个item
    'tag' => 'div',
    'class' => 'col-lg-3'
  ],
  /*
  'options' => [//针对整个listview
    'tag' => 'div',
    'class' => 'col-lg-3'
  ],
  */
  'pager' => [
    //'options' => ['class' => 'hidden'],//关闭分页(默认开启)
    /* 分页按钮设置 */
    'maxbuttoncount' => 5,//最多显示几个分页按钮
    'firstpagelabel' => '首页',
    'prevpagelabel' => '上一页',
    'nextpagelabel' => '下一页',
    'lastpagelabel' => '尾页'
  ]
]);?>

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

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

<div class="item">
  <h4 style="font-weight:bold"><?= html::encode($model->title ? $model->title : '(无题)') ?></h4>
   
  <p style="font-size:13px">
    <span style="color:orangered"><?= date('y.m.d', $model->day) ?></span><br>
    <span style="color:#999">心情:<?= $moodcfg[$model->mood] ?></span>//这里访问listview的'viewparams'参数传过来的参数$moodcfg
  </p>
   
  <div style="margin:15px 0">
        
    <?php echo htmlpurifier::process(mb_substr($model->content, 0, 25).'......'); ?>
  </div>
   
  <p class="info">
    添加:<?= date('y-m-d h:i:s', $model->created_at) ?><br>
    最后修改:<?= date('y-m-d h:i:s', $model->updated_at) ?>
  </p>
   
  <div style="text-align:right">
    <?= html::a('<span class="glyphicon glyphicon-eye-open"></span>', ['view', 'id' => $model->id], ['title' => '查看']) ?>
    <?= html::a('<span class="glyphicon glyphicon-pencil"></span>', ['upcreate', 'id' => $model->id], ['title' => '修改']) ?>
    <?= html::a('<span class="glyphicon glyphicon-trash"></span>', ['delete', 'id' => $model->id], [
      'title' => '删除',
      'data' => [
        'confirm' => '您确定真的要删除 '.date('y年m月d日', $model->day).' 的日记吗?',
        'method' => 'post',
      ]
    ]) ?>
  </div>
</div>

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

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

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