Class yii\widgets\DetailView

继承yii\widgets\DetailView » yii\base\Widget » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable, yii\base\ViewContextInterface
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/widgets/DetailView.php

DetailView 显示单个数据 模型 的细节.

DetailView 最适用于以常规格式显示模型(eg. 每个模型属性显示为表格中的一行). 模型可以是 yii\base\Model 的实例或关联数组.

DetailView 使用 $attributes 属性来确定应显示哪些模型属性以及它们应该如何格式化.

DetailView 的典型用法如下:

echo DetailView::widget([
    'model' => $model,
    'attributes' => [
        'title',               // 标题属性(纯文本)
        'description:html',    // HTML 中的描述属性
        [                      // 模型的所有者名称
            'label' => 'Owner',
            'value' => $model->owner->name,
        ],
        'created_at:datetime', // 创建日期格式化为日期时间
    ],
]);

有关 DetailView 的更多详细信息和使用信息, 请参阅 权威指南 - 显示数据 - 数据小部件(Data Widgets).

公共属性

隐藏继承的属性

属性类型描述定义在
$attributes array 要在详细视图(detail view)中显示的属性列表. yii\widgets\DetailView
$autoIdPrefix string 自动生成的小部件 ID 的前缀. yii\base\Widget
$behaviors yii\base\Behavior[] 附加到此组件的行为列表. 该属性是只读的. yii\base\Component
$counter integer 用于为小部件生成 $id 的计数器. yii\base\Widget
$formatter array|yii\i18n\Formatter 格式化程序用于将模型属性值格式化为可显示的文本. yii\widgets\DetailView
$id string|null 小部件的 ID. Note: 此属性的类型在 getter 和 setter 中不同. 有关详细信息, 请参阅 getId()setId(). yii\base\Widget
$model array|object 要显示其详细信息(detail view)的数据模型. yii\widgets\DetailView
$options array 此小部件的容器标签的 HTML 属性. yii\widgets\DetailView
$stack yii\base\Widget[] 当前正在渲染的小部件(未结束). yii\base\Widget
$template string|callable 用于渲染单个属性的模板. yii\widgets\DetailView
$view yii\web\View 可用于渲染视图或视图文件的视图对象. Note: 此属性的类型在 getter 和 setter 中不同. 有关详细信息, 请参阅 getView()setView(). yii\base\Widget
$viewPath string 包含此小部件的视图文件的目录. 该属性是只读的. yii\base\Widget

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的指定的方法. yii\base\Component
__clone() 在通过克隆现有对象创建对象之后调用此方法. yii\base\Component
__construct() 构造函数. yii\base\BaseObject
__get() 返回组件属性的值. yii\base\Component
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\Component
__set() 设置组件属性的值. yii\base\Component
__unset() 将组件属性设置为null. yii\base\Component
afterRun() 在执行小部件后立即调用该方法. yii\base\Widget
attachBehavior() 将行为附加到此组件. yii\base\Component
attachBehaviors() 将行为列表附加到组件. yii\base\Component
beforeRun() 在执行小部件之前立即调用该方法. yii\base\Widget
begin() 开始一个小部件. yii\base\Widget
behaviors() 返回此组件应该具有的行为列表. yii\base\Component
canGetProperty() 返回一个值, 指示属性是否可读取. yii\base\Component
canSetProperty() 返回一个值, 指示属性是否可设置. yii\base\Component
className() 返回此类的完全限定名称. yii\base\BaseObject
detachBehavior() 从组件中分离一个行为. yii\base\Component
detachBehaviors() 分离组件中的所有行为. yii\base\Component
end() 结束小部件. yii\base\Widget
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件. yii\base\Component
getBehavior() 返回指定的行为对象. yii\base\Component
getBehaviors() 返回附加到此组件的所有行为. yii\base\Component
getId() 返回小部件的 ID. yii\base\Widget
getView() 返回可用于渲染视图或视图文件的视图对象. yii\base\Widget
getViewPath() 返回包含此小部件的视图文件的目录. yii\base\Widget
hasEventHandlers() 返回一个值, 指示是否有任何处理程序附加到指定的事件. yii\base\Component
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\Component
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\Component
init() 初始化详细视图(detail view). yii\widgets\DetailView
off() 从该组件分离现有的事件处理程序. yii\base\Component
on() 将事件处理程序附加到事件. yii\base\Component
render() 渲染视图. yii\base\Widget
renderFile() 渲染视图文件. yii\base\Widget
run() 渲染详细视图(detail view). yii\widgets\DetailView
setId() 设置小部件的 ID. yii\base\Widget
setView() 设置此小部件要使用的视图对象. yii\base\Widget
trigger() 触发事件. yii\base\Component
widget() 创建一个小部件实例并运行它. yii\base\Widget

受保护的方法

隐藏继承的方法

方法描述定义在
normalizeAttributes() 规范属性格式. yii\widgets\DetailView
renderAttribute() 渲染单个属性. yii\widgets\DetailView

事件

隐藏继承的事件

事件类型描述定义在
EVENT_AFTER_RUN yii\base\WidgetEvent 在执行小部件之后立即触发的事件. (available since version 2.0.11) yii\base\Widget
EVENT_BEFORE_RUN yii\base\WidgetEvent 在执行小部件之前触发的事件. (available since version 2.0.11) yii\base\Widget
EVENT_INIT yii\base\Event 当通过 init() 初始化小部件时触发的事件. (available since version 2.0.11) yii\base\Widget

属性详情

$attributes public 属性

要在详细视图(detail view)中显示的属性列表.

每个数组元素表示用于显示一个特定属性的格式.

可以将属性指定为字符串, 格式为attribute, attribute:formatattribute:format:label, 其中attribute指属性名称, format代表属性的格式. format被传递给 yii\i18n\Formatter::format() 方法来将属性值格式化为可显示的文本. 请参考 yii\i18n\Formatter 了解支持的类型. formatlabel都是可选的. 如果缺失, 它们将采用默认值.

也可以用包含以下元素的数组来指定属性:

  • attribute: 属性名称. 如果未指定labelvalue, 则这是必需的.
  • label: 与该属性关联的标签. 如果未指定, 它将根据属性名称生成.
  • value: 要显示的值. 如果未指定, 则将通过调用 yii\helpers\ArrayHelper::getValue(), 使用属性名称从 $model 中检索. 请注意, 根据format选项, 该值将被格式化为可显示的文本. 从版本 2.0.11 开始, 可以使用以下参数将其定义为闭包(closure):

    function ($model, $widget)
    

    $model指的是显示的模型, $widgetDetailView小部件的一个实例.

  • format: 值的类型, 该值确定如何将值格式化为可显示文本. 有关支持的类型, 请参阅 yii\i18n\Formatter; 有关如果指定此值的信息, 请参阅 yii\i18n\Formatter::format().
  • visible: 该属性是否可见. 如果设置为false, 则不会显示该属性.
  • contentOptions: 用于自定义 value 标签的 HTML 属性. 例如: ['class' => 'bg-red']. 支持的语法请参考 yii\helpers\BaseHtml::renderTagAttributes().
  • captionOptions: 用于自定义 label 标签的 HTML 属性. 例如: ['class' => 'bg-red']. 支持的语法请参考 yii\helpers\BaseHtml::renderTagAttributes().
public array $attributes null
$formatter public 属性

格式化程序用于将模型属性值格式化为可显示的文本.

这可以是 yii\i18n\Formatter 的实例, 或用于创建 yii\i18n\Formatter 实例的配置数组.

如果此属性未设置, 则将使用应用程序formatter组件.

$model public 属性

要显示其详细信息(detail view)的数据模型. 这可以是一个 yii\base\Model 实例, 一个关联数组, 一个实现 yii\base\Arrayable 接口的对象, 或者只是一个具有已定义的公共可访问非静态属性的对象.

public array|object $model null
$options public 属性

此小部件的容器标签的 HTML 属性. tag选项指定应使用的容器标签. 如果未设置, 则默认为table.

参见 yii\helpers\Html::renderTagAttributes() 有关如何渲染属性的详细信息.

public array $options = ['class' => 'table table-striped table-bordered detail-view']
$template public 属性

用于渲染单个属性的模板.

如果一个字符串, 标记{label}{value}将被替换为标签和相应属性的值.

如果是回调(eg. 例如匿名函数), 则签名必须如下所示:

function ($attribute, $index, $widget)

其中$attribute表示要渲染的属性的格式, $index$attributes 数组中属性的从0开始的索引, 而$widget表示此小部件的实例.

自版本 2.0.10 开始, 可以使用标记{captionOptions}{contentOptions}, 它们将表示标签和值的 HTML 容器元素的 HTML 属性.

public string|callable $template '<tr><th{captionOptions}>{label}</th><td{contentOptions}>{value}</td></tr>'

方法详情

init() public 方法

初始化详细视图(detail view).

该方法将初始化所需的属性值.

public void init ( )
normalizeAttributes() protected 方法

规范属性格式.

protected void normalizeAttributes ( )
throws yii\base\InvalidConfigException
renderAttribute() protected 方法

渲染单个属性.

protected string renderAttribute ( $attribute, $index )
$attribute array

要渲染的属性的格式.

$index integer

$attributes 数组中属性的从0开始的索引.

return string

渲染结果.

run() public 方法

渲染详细视图(detail view).

这是整个详细视图渲染的主要输入.

public void run ( )