数据小部件
============
Yii提供了一套数据小部件 [widgets](structure-widgets.md) ,这些小部件可以用于显示数据。
[DetailView](#detail-view) 小部件能够用于显示一条记录数据,
[ListView](#list-view) 和 [GridView](#grid-view) 小部件能够用于显示一个拥有分页、
排序和过滤功能的一个列表或者表格。
DetailView 
----------
[[yii\widgets\DetailView|DetailView]] 小部件显示的是单一 [[yii\widgets\DetailView::$model|model]] 数据的详情。
它非常适合用常规格式显示一个模型(例如在一个表格的一行中显示模型的每个属性)。
这里说的模型可以是 [[\yii\base\Model]] 或者其子类的一个实例,例如子类 [active record](db-active-record.md),也可以是一个关联数组。
DetailView使用 [[yii\widgets\DetailView::$attributes|$attributes]] 属性来决定显示模型哪些属性以及如何格式化。
可用的格式化选项,见 [formatter section](output-formatting.md) 章节。
一个典型的DetailView的使用方法如下:
 
```php
echo DetailView::widget([
    'model' => $model,
    'attributes' => [
        'title',               // title attribute (in plain text)
        'description:html',    // description attribute formatted as HTML
        [                      // the owner name of the model
            'label' => 'Owner',
            'value' => $model->owner->name,
        ],
        'created_at:datetime', // creation date formatted as datetime
    ],
]);
```
ListView 
--------
[[yii\widgets\ListView|ListView]] 小部件用于显示数据提供者 [data provider](output-data-providers.md) 提供的数据。
每个数据模型用指定的视图文件 [[yii\widgets\ListView::$itemView|view file]] 来渲染。
因为它提供开箱即用式的(译者注:封装好的)分页、排序以及过滤这样一些特性,
所以它可以很方便地为最终用户显示信息并同时创建数据管理界面。
一个典型的用法如下例所示:
```php
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
     ['index'],
        'method' => 'get',
    ]); ?>
    = $form->field($model, 'title') ?>
    = $form->field($model, 'creation_date') ?>
    
        = Html::submitButton('Search', ['class' => 'btn btn-primary']) ?>
        = Html::submitButton('Reset', ['class' => 'btn btn-default']) ?>