yii2 如何使用数据小部件之DetailView

时间:2022-10-04 20:44:35

什么是数据小部件

顾名思义,数据小部件用来显示数据的小模块。 常用的小部件有DetailView,ListView,GridVew。

DetailView:主要用来显示一条记录数据的详细情况。
ListView 和 GridView:他们可以用来显示一个拥有分页、 排序和过滤功能的一组数据。

常见的数据小部件

DetailView用法

DetailView小部件通常用来显示的是一条记录的详情。

  • 一个Model模型类对象。
  • 一个AR类的实例对象。
  • 由键值对构成的一个关联数组。

在我们的例子中,它就是用来显示一个AR类的实例对象,是一个文章类的实例对象。

如何显示呢,创建一个DetailView小部件来展示。

参看例子:

 <?= DetailView::widget([ 'model' => $model, 'attributes' => [ 'id', 'title', 'content:ntext', 'tags', [ 'attribute'=>'status' 'value'=>$model->status0->name ] 'author_id', 'create_time:datetime', 'update_time:datetime', ], ]) ?>

需要调用DetailView的静态方法widget,
给的参数是一个关联数组:
==model== 这个键用来设置需要显示的AR对象。这里是控制器传过来的文章模型对象。
==attributes== 这个键的值又是一个关联数组,数组里面决定需要显示哪些属性以及它的格式。这样就可以把对象展示出来了。

DetailView 属性

DetailView中常用的属性

属性 作用
attribute 在视图上展示的属性列表
model 接收控制器传递的AR类
options 设置小部件标签的属性
template 设置模板样式

其中attribute中还可以设置如下属性

属性 作用
attribute 设置属性名【必要】(如果没有label和value属)
label 属性关联的名称
value 属性的值,可以使用匿名函数 function ( model, widget), model widget表示DetailView的实例
format 显示该属性的显示格式

options格式

'options' => ['class' => 'table table-striped table-bordered detail-view']

template格式

'template' => '<tr><th{captionOptions}>{label}</th><td{contentOptions}>{value}</td></tr>'