Skip to content
PHP Ecosystem
Explore

DetailView

API reference › yii › widgets › DetailView

DetailView displays the detail of a single data $model.

DetailView is best used for displaying a model in a regular format (e.g. each model attribute is displayed as a row in a table.) The model can be either an instance of Model or an associative array.

DetailView uses the $attributes property to determines which model attributes should be displayed and how they should be formatted.

A typical usage of DetailView is as follows:

echo DetailView::widget([
'model' => $model,
'attributes' => [
'title', // title attribute (in plain text)
'description:html', // description attribute in HTML
[ // the owner name of the model
'label' => 'Owner',
'value' => $model->owner->name,
],
'created_at:datetime', // creation date formatted as datetime
],
]);

For more details and usage information on DetailView, see the guide article on data widgets.

PropertyTypeDescriptionDefined by
$attributesarrayA list of attributes to be displayed in the detail view. Default: null.DetailView
$autoIdPrefix staticstringThe prefix to the automatically generated widget IDs. Default: 'w'.yii\base\Widget
$behaviors read-onlyarray<yii\base\Behavior<static>>List of behaviors attached to this component.yii\base\Component
$formatterarray|yii\i18n\Formatter|nullThe formatter used to format model attribute values into displayable texts. Default: null.DetailView
$idstringId of the widget.yii\base\Widget
$modelarray|objectThe data model whose details are to be displayed. Default: null.DetailView
$optionsarray|nullThe HTML attributes for the container tag of this widget. Default: ['class' => 'detail-view'].DetailView
$templatestring|callableThe template used to render a single attribute. Default: '<tr><th{captionOptions}>{label}</th><td{contentOptions}>{value}</td></tr>'.DetailView
$viewyii\web\ViewThe view object that can be used to render views or view files.yii\base\Widget
$viewPath read-onlystringThe directory containing the view files for this widget.yii\base\Widget
MethodDescriptionDefined by
__construct()Constructor.yii\base\BaseObject
__call()Calls the named method which is not a class method.yii\base\Component
__clone()This method is called after the object is created by cloning an existing one.yii\base\Component
__get()Returns the value of a component property.yii\base\Component
__isset()Checks if a property is set, i.e. defined and not null.yii\base\Component
__set()Sets the value of a component property.yii\base\Component
__unset()Sets a component property to be null.yii\base\Component
afterRun()This method is invoked right after a widget is executed.yii\base\Widget
attachBehavior()Attaches a behavior to this component.yii\base\Component
attachBehaviors()Attaches a list of behaviors to the component.yii\base\Component
beforeRun()This method is invoked right before the widget is executed.yii\base\Widget
begin() staticBegins a widget.yii\base\Widget
behaviors()Returns a list of behaviors that this component should behave as.yii\base\Component
canGetProperty()Returns a value indicating whether a property can be read.yii\base\Component
canSetProperty()Returns a value indicating whether a property can be set.yii\base\Component
className() staticReturns the fully qualified name of this class.yii\base\BaseObject
detachBehavior()Detaches a behavior from the component.yii\base\Component
detachBehaviors()Detaches all behaviors from the component.yii\base\Component
end() staticEnds a widget.yii\base\Widget
ensureBehaviors()Makes sure that the behaviors declared in behaviors() are attached to this component.yii\base\Component
getBehavior()Returns the named behavior object.yii\base\Component
getBehaviors()Returns all behaviors attached to this component.yii\base\Component
getId()Returns the ID of the widget.yii\base\Widget
getView()Returns the view object that can be used to render views or view files.yii\base\Widget
getViewPath()Returns the directory containing the view files for this widget.yii\base\Widget
hasEventHandlers()Returns a value indicating whether there is any handler attached to the named event.yii\base\Component
hasMethod()Returns a value indicating whether a method is defined.yii\base\Component
hasProperty()Returns a value indicating whether a property is defined for this component.yii\base\Component
init()Initializes the detail view.DetailView
off()Detaches an existing event handler from this component.yii\base\Component
on()Attaches an event handler to an event.yii\base\Component
render()Renders a view.yii\base\Widget
renderFile()Renders a view file.yii\base\Widget
run()Renders the detail view.DetailView
setId()Sets the ID of the widget.yii\base\Widget
setView()Sets the view object to be used by this widget.yii\base\Widget
trigger()Triggers an event.yii\base\Component
widget() staticCreates a widget instance and runs it.yii\base\Widget
normalizeAttributes() protectedNormalizes the attribute specifications.DetailView
renderAttribute() protectedRenders a single attribute.DetailView
EventTypeDescriptionDefined by
EVENT_INITyii\base\EventAn event that is triggered when the widget is initialized via init(). Event name: 'init'. Available since 2.0.11.yii\base\Widget
EVENT_BEFORE_RUNyii\base\WidgetEventAn event raised right before executing a widget. Event name: 'beforeRun'. Available since 2.0.11.yii\base\Widget
EVENT_AFTER_RUNyii\base\WidgetEventAn event raised right after executing a widget. Event name: 'afterRun'. Available since 2.0.11.yii\base\Widget
public array $attributes = null

A list of attributes to be displayed in the detail view.

Each array element represents the specification for displaying one particular attribute.

An attribute can be specified as a string in the format of attribute, attribute:format or attribute:format:label, where attribute refers to the attribute name, and format represents the format of the attribute. The format is passed to the Formatter::format() method to format an attribute value into a displayable text. Please refer to Formatter for the supported types. Both format and label are optional. They will take default values if absent.

An attribute can also be specified in terms of an array with the following elements:

  • attribute: the attribute name. This is required if either label or value is not specified.

  • label: the label associated with the attribute. If this is not specified, it will be generated from the attribute name.

  • value: the value to be displayed. If this is not specified, it will be retrieved from $model using the attribute name by calling ArrayHelper::getValue(). Note that this value will be formatted into a displayable text according to the format option. Since version 2.0.11 it can be defined as closure with the following parameters:

    function ($model, $widget)

    $model refers to displayed model and $widget is an instance of DetailView widget.

  • format: the type of the value that determines how the value would be formatted into a displayable text. Please refer to Formatter for supported types and Formatter::format() on how to specify this value.

  • visible: whether the attribute is visible. If set to false, the attribute will NOT be displayed.

  • contentOptions: the HTML attributes to customize value tag. For example: ['class' => 'bg-red']. Please refer to BaseHtml::renderTagAttributes() for the supported syntax.

  • captionOptions: the HTML attributes to customize label tag. For example: ['class' => 'bg-red']. Please refer to BaseHtml::renderTagAttributes() for the supported syntax.

public array|yii\i18n\Formatter|null $formatter = null

The formatter used to format model attribute values into displayable texts.

This can be either an instance of Formatter or an configuration array for creating the Formatter instance. If this property is not set, the formatter application component will be used.

public array|object $model = null

The data model whose details are to be displayed.

This can be a Model instance, an associative array, an object that implements Arrayable interface or simply an object with defined public accessible non-static properties.

public array|null $options = ['class' => 'detail-view']

The HTML attributes for the container tag of this widget.

The tag option specifies what container tag should be used. It defaults to table if not set.

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

The template used to render a single attribute.

If a string, the token {label} and {value} will be replaced with the label and the value of the corresponding attribute. If a callback (e.g. an anonymous function), the signature must be as follows:

function ($attribute, $index, $widget)

where $attribute refer to the specification of the attribute being rendered, $index is the zero-based index of the attribute in the $attributes array, and $widget refers to this widget instance.

Since Version 2.0.10, the tokens {captionOptions} and {contentOptions} are available, which will represent HTML attributes of HTML container elements for the label and value.

public function init(): mixed

Initializes the detail view.

This method will initialize required property values.

Returns

mixed

public function run(): mixed

Renders the detail view.

This is the main entry of the whole detail view rendering.

Returns

mixed

protected function normalizeAttributes(): mixed

Normalizes the attribute specifications.

Returns

mixed

Throws

protected function renderAttribute(array $attribute, int $index): string

Renders a single attribute.

Parameters

ParameterTypeDescription
$attributearrayThe specification of the attribute to be rendered.
$indexintThe zero-based index of the attribute in the $attributes array

Returns

string: The rendering result