Yii2-ListView

yii\widgets\ListView 小部件用于显示数据提供者 data provider 提供的数据。 每个数据模型用指定的视图文件 yii\widgets\ListView::$itemView 来渲染。 因为它提供开箱即用式的(译者注:封装好的)分页、排序以及过滤这样一些特性,所以它可以很方便地为最终用户显示信息并同时创建数据管理界面。

一个典型的用法如下例所示:

use yii\widgets\ListView;
use yii\data\ActiveDataProvider;

$dataProvider = new ActiveDataProvider([
    'query' => Post::find(),
    'pagination' => [
        'pageSize' => 20,
    ],
]);
echo ListView::widget([
    'dataProvider' => $dataProvider,
    'itemView' => '_post',
]);

_post 视图文件可包含如下代码:

<?php
use yii\helpers\Html;
use yii\helpers\HtmlPurifier;
?>
<div class="post">
    <h2><?= Html::encode($model->title) ?></h2>
    
    <?= HtmlPurifier::process($model->text) ?>    
</div>

在上面的视图文件中,当前的数据模型 $model 是可用的。另外,下面的这些变量也是可用的:

  • $key:混合类型,键的值与数据项相关联。
  • $index:整型,是由数据提供者返回的数组中以0起始的数据项的索引。
  • $widget:类型是ListView,是小部件的实例。

假如你需要传递附加数据到每一个视图中,你可以像下面这样用 yii\widgets\ListView::$viewParams 属性传递键值对:

echo ListView::widget([
    'dataProvider' => $dataProvider,
    'itemView' => '_post',
    'viewParams' => [
        'fullView' => true,
        'context' => 'main-page',
        // ...
    ],
]);

在视图中,上述这些附加数据也是可以作为变量来使用的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注