Yii2框架之ListView小部件的使用方法
author:一佰互联 2019-04-25   click:188

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>

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

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