Class yii\grid\GridView

Inheritanceyii\grid\GridView » yii\widgets\BaseListView » yii\base\Widget » yii\base\Component » yii\base\BaseObject
Implementsyii\base\Configurable, yii\base\ViewContextInterface
Available since version2.0
Source Code https://github.com/yiisoft/yii2/blob/master/framework/grid/GridView.php

The GridView widget is used to display data in a grid.

It provides features like sorting, paging and also filtering the data.

A basic usage looks like the following:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        'id',
        'name',
        'created_at:datetime',
        // ...
    ],
]) ?>

The columns of the grid table are configured in terms of yii\grid\Column classes, which are configured via $columns.

The look and feel of a grid view can be customized using the large amount of properties.

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

Public Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
$afterRow Closure An anonymous function that is called once AFTER rendering each data model. yii\grid\GridView
$autoIdPrefix string The prefix to the automatically generated widget IDs. yii\base\Widget
$beforeRow Closure An anonymous function that is called once BEFORE rendering each data model. yii\grid\GridView
$behaviors yii\base\Behavior[] List of behaviors attached to this component. This property is read-only. yii\base\Component
$caption string The caption of the grid table yii\grid\GridView
$captionOptions array The HTML attributes for the caption element. yii\grid\GridView
$columns array Grid column configuration. yii\grid\GridView
$counter integer A counter used to generate $id for widgets. yii\base\Widget
$dataColumnClass string The default data column class if the class name is not explicitly specified when configuring a data column. yii\grid\GridView
$dataProvider yii\data\DataProviderInterface The data provider for the view. yii\widgets\BaseListView
$emptyCell string The HTML display when the content of a cell is empty. yii\grid\GridView
$emptyText string|false The HTML content to be displayed when $dataProvider does not have any data. yii\widgets\BaseListView
$emptyTextOptions array The HTML attributes for the emptyText of the list view. yii\widgets\BaseListView
$filterErrorOptions array The options for rendering every filter error message. yii\grid\GridView
$filterErrorSummaryOptions array The options for rendering the filter error summary. yii\grid\GridView
$filterModel yii\base\Model The model that keeps the user-entered filter data. yii\grid\GridView
$filterOnFocusOut boolean Whatever to apply filters on losing focus. yii\grid\GridView
$filterPosition string Whether the filters should be displayed in the grid view. yii\grid\GridView
$filterRowOptions array The HTML attributes for the filter row element. yii\grid\GridView
$filterSelector string Additional jQuery selector for selecting filter input fields yii\grid\GridView
$filterUrl string|array The URL for returning the filtering result. yii\grid\GridView
$footerRowOptions array The HTML attributes for the table footer row. yii\grid\GridView
$formatter array|yii\i18n\Formatter The formatter used to format model attribute values into displayable texts. yii\grid\GridView
$headerRowOptions array The HTML attributes for the table header row. yii\grid\GridView
$id string|null ID of the widget. Note that the type of this property differs in getter and setter. See getId() and setId() for details. yii\base\Widget
$layout string The layout that determines how different sections of the grid view should be organized. yii\grid\GridView
$options array The HTML attributes for the container tag of the grid view. yii\grid\GridView
$pager array The configuration for the pager widget. yii\widgets\BaseListView
$placeFooterAfterBody boolean Whether to place footer after body in DOM if $showFooter is true yii\grid\GridView
$rowOptions array|Closure The HTML attributes for the table body rows. yii\grid\GridView
$showFooter boolean Whether to show the footer section of the grid table. yii\grid\GridView
$showHeader boolean Whether to show the header section of the grid table. yii\grid\GridView
$showOnEmpty boolean Whether to show the grid view if $dataProvider returns no data. yii\grid\GridView
$sorter array The configuration for the sorter widget. yii\widgets\BaseListView
$stack yii\base\Widget[] The widgets that are currently being rendered (not ended). yii\base\Widget
$summary string The HTML content to be displayed as the summary of the list view. yii\widgets\BaseListView
$summaryOptions array The HTML attributes for the summary of the list view. yii\widgets\BaseListView
$tableOptions array The HTML attributes for the grid table element. yii\grid\GridView
$view yii\web\View The view object that can be used to render views or view files. Note that the type of this property differs in getter and setter. See getView() and setView() for details. yii\base\Widget
$viewPath string The directory containing the view files for this widget. This property is read-only. yii\base\Widget

Public Methods

Hide inherited methods

MethodDescriptionDefined By
__call() Calls the named method which is not a class method. yii\base\BaseObject
__clone() This method is called after the object is created by cloning an existing one. yii\base\Component
__construct() Constructor. yii\base\BaseObject
__get() Returns the value of an object property. yii\base\BaseObject
__isset() Checks if a property is set, i.e. defined and not null. yii\base\BaseObject
__set() Sets value of an object property. yii\base\BaseObject
__unset() Sets an object property to null. yii\base\BaseObject
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() Begins 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\BaseObject
canSetProperty() Returns a value indicating whether a property can be set. yii\base\BaseObject
className() Returns 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() Ends 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() yii\base\ViewContextInterface
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\BaseObject
hasProperty() Returns a value indicating whether a property is defined. yii\base\BaseObject
init() Initializes the grid view. yii\grid\GridView
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
renderCaption() Renders the caption element. yii\grid\GridView
renderColumnGroup() Renders the column group HTML. yii\grid\GridView
renderEmpty() Renders the HTML content indicating that the list view has no data. yii\widgets\BaseListView
renderErrors() Renders validator errors of filter model. yii\grid\GridView
renderFile() Renders a view file. yii\base\Widget
renderFilters() Renders the filter. yii\grid\GridView
renderItems() Renders the data models for the grid view. yii\grid\GridView
renderPager() Renders the pager. yii\widgets\BaseListView
renderSection() Renders a section of the specified name. yii\grid\GridView
renderSorter() Renders the sorter. yii\widgets\BaseListView
renderSummary() Renders the summary text. yii\widgets\BaseListView
renderTableBody() Renders the table body. yii\grid\GridView
renderTableFooter() Renders the table footer. yii\grid\GridView
renderTableHeader() Renders the table header. yii\grid\GridView
renderTableRow() Renders a table row with the given data model and key. yii\grid\GridView
run() Runs the widget. yii\grid\GridView
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() Creates a widget instance and runs it. yii\base\Widget

Protected Methods

Hide inherited methods

MethodDescriptionDefined By
createDataColumn() Creates a yii\grid\DataColumn object based on a string in the format of "attribute:format:label". yii\grid\GridView
getClientOptions() Returns the options for the grid view JS widget. yii\grid\GridView
guessColumns() This function tries to guess the columns to show from the given data if $columns are not explicitly specified. yii\grid\GridView
initColumns() Creates column objects and initializes them. yii\grid\GridView

Events

Hide inherited events

EventTypeDescriptionDefined By
EVENT_AFTER_RUN yii\base\WidgetEvent An event raised right after executing a widget. (available since version 2.0.11) yii\base\Widget
EVENT_BEFORE_RUN yii\base\WidgetEvent An event raised right before executing a widget. (available since version 2.0.11) yii\base\Widget
EVENT_INIT yii\base\Event An event that is triggered when the widget is initialized via init(). (available since version 2.0.11) yii\base\Widget

Constants

Hide inherited constants

ConstantValueDescriptionDefined By
FILTER_POS_BODY 'body' yii\grid\GridView
FILTER_POS_HEADER 'header' yii\grid\GridView

Property Details

$afterRow public property

An anonymous function that is called once AFTER rendering each data model. It should have the similar signature as $rowOptions. The return result of the function will be rendered directly.

public Closure $afterRow null
$beforeRow public property

An anonymous function that is called once BEFORE rendering each data model. It should have the similar signature as $rowOptions. The return result of the function will be rendered directly.

public Closure $beforeRow null
$caption public property

The caption of the grid table

See also $captionOptions.

public string $caption null
$captionOptions public property

The HTML attributes for the caption element.

See also:

public array $captionOptions = []
$columns public property

Grid column configuration. Each array element represents the configuration for one particular grid column. For example,

[
    ['class' => SerialColumn::className()],
    [
        'class' => DataColumn::className(), // this line is optional
        'attribute' => 'name',
        'format' => 'text',
        'label' => 'Name',
    ],
    ['class' => CheckboxColumn::className()],
]

If a column is of class yii\grid\DataColumn, the "class" element can be omitted.

As a shortcut format, a string may be used to specify the configuration of a data column which only contains attribute, format, and/or label options: "attribute:format:label". For example, the above "name" column can also be specified as: "name:text:Name". Both "format" and "label" are optional. They will take default values if absent.

Using the shortcut format the configuration for columns in simple cases would look like this:

[
    'id',
    'amount:currency:Total Amount',
    'created_at:datetime',
]

When using a $dataProvider with active records, you can also display values from related records, e.g. the name attribute of the author relation:

// shortcut syntax
'author.name',
// full syntax
[
    'attribute' => 'author.name',
    // ...
]
public array $columns = []
$dataColumnClass public property

The default data column class if the class name is not explicitly specified when configuring a data column. Defaults to 'yii\grid\DataColumn'.

public string $dataColumnClass null
$emptyCell public property

The HTML display when the content of a cell is empty. This property is used to render cells that have no defined content, e.g. empty footer or filter cells.

Note that this is not used by the yii\grid\DataColumn if a data item is null. In that case the nullDisplay property of the $formatter will be used to indicate an empty data value.

public string $emptyCell '&nbsp;'
$filterErrorOptions public property

The options for rendering every filter error message. This is mainly used by yii\helpers\Html::error() when rendering an error message next to every filter input field.

public array $filterErrorOptions = ['class' => 'help-block']
$filterErrorSummaryOptions public property

The options for rendering the filter error summary. Please refer to yii\helpers\Html::errorSummary() for more details about how to specify the options.

See also renderErrors().

public array $filterErrorSummaryOptions = ['class' => 'error-summary']
$filterModel public property

The model that keeps the user-entered filter data. When this property is set, the grid view will enable column-based filtering. Each data column by default will display a text field at the top that users can fill in to filter the data.

Note that in order to show an input field for filtering, a column must have its yii\grid\DataColumn::$attribute property set and the attribute should be active in the current scenario of $filterModel or have yii\grid\DataColumn::$filter set as the HTML code for the input field.

When this property is not set (null) the filtering feature is disabled.

$filterOnFocusOut public property (available since version 2.0.16)

Whatever to apply filters on losing focus. Leaves an ability to manage filters via yiiGridView JS

public boolean $filterOnFocusOut true
$filterPosition public property

Whether the filters should be displayed in the grid view. Valid values include:

  • FILTER_POS_HEADER: the filters will be displayed on top of each column's header cell.
  • FILTER_POS_BODY: the filters will be displayed right below each column's header cell.
  • FILTER_POS_FOOTER: the filters will be displayed below each column's footer cell.
public string $filterPosition self::FILTER_POS_BODY
$filterRowOptions public property

The HTML attributes for the filter row element.

See also yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.

public array $filterRowOptions = ['class' => 'filters']
$filterSelector public property

Additional jQuery selector for selecting filter input fields

public string $filterSelector null
$filterUrl public property

The URL for returning the filtering result. yii\helpers\Url::to() will be called to normalize the URL. If not set, the current controller action will be used. When the user makes change to any filter input, the current filtering inputs will be appended as GET parameters to this URL.

public string|array $filterUrl null
$footerRowOptions public property

The HTML attributes for the table footer row.

See also yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.

$formatter public property

The formatter used to format model attribute values into displayable texts. This can be either an instance of yii\i18n\Formatter or an configuration array for creating the yii\i18n\Formatter instance. If this property is not set, the "formatter" application component will be used.

$headerRowOptions public property

The HTML attributes for the table header row.

See also yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.

$layout public property

The layout that determines how different sections of the grid view should be organized. The following tokens will be replaced with the corresponding section contents:

public string $layout "{summary}\n{items}\n{pager}"
$options public property

The HTML attributes for the container tag of the grid view. The "tag" element specifies the tag name of the container element and defaults to "div".

See also yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.

public array $options = ['class' => 'grid-view']
$placeFooterAfterBody public property (available since version 2.0.14)

Whether to place footer after body in DOM if $showFooter is true

$rowOptions public property

The HTML attributes for the table body rows. This can be either an array specifying the common HTML attributes for all body rows, or an anonymous function that returns an array of the HTML attributes. The anonymous function will be called once for every data model returned by $dataProvider. It should have the following signature:

function ($model, $key, $index, $grid)
  • $model: the current data model being rendered
  • $key: the key value associated with the current data model
  • $index: the zero-based index of the data model in the model array returned by $dataProvider
  • $grid: the GridView object

See also yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.

$showFooter public property

Whether to show the footer section of the grid table.

public boolean $showFooter false
$showHeader public property

Whether to show the header section of the grid table.

public boolean $showHeader true
$showOnEmpty public property

Whether to show the grid view if $dataProvider returns no data.

public boolean $showOnEmpty true
$tableOptions public property

The HTML attributes for the grid table element.

See also yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.

public array $tableOptions = ['class' => 'table table-striped table-bordered']

Method Details

createDataColumn() protected method

Creates a yii\grid\DataColumn object based on a string in the format of "attribute:format:label".

protected yii\grid\DataColumn createDataColumn ( $text )
$text string

The column specification string

return yii\grid\DataColumn

The column instance

throws yii\base\InvalidConfigException

if the column specification is invalid

getClientOptions() protected method

Returns the options for the grid view JS widget.

protected array getClientOptions ( )
return array

The options

guessColumns() protected method

This function tries to guess the columns to show from the given data if $columns are not explicitly specified.

protected void guessColumns ( )
init() public method

Initializes the grid view.

This method will initialize required property values and instantiate $columns objects.

public void init ( )
initColumns() protected method

Creates column objects and initializes them.

protected void initColumns ( )
renderCaption() public method

Renders the caption element.

public boolean|string renderCaption ( )
return boolean|string

The rendered caption element or false if no caption element should be rendered.

renderColumnGroup() public method

Renders the column group HTML.

public boolean|string renderColumnGroup ( )
return boolean|string

The column group HTML or false if no column group should be rendered.

renderErrors() public method

Renders validator errors of filter model.

public string renderErrors ( )
return string

The rendering result.

renderFilters() public method

Renders the filter.

public string renderFilters ( )
return string

The rendering result.

renderItems() public method

Renders the data models for the grid view.

public string renderItems ( )
return string

The HTML code of table

renderSection() public method

Renders a section of the specified name.

If the named section is not supported, false will be returned.

public string|boolean renderSection ( $name )
$name string

The section name, e.g., {summary}, {items}.

return string|boolean

The rendering result of the section, or false if the named section is not supported.

renderTableBody() public method

Renders the table body.

public string renderTableBody ( )
return string

The rendering result.

renderTableFooter() public method

Renders the table footer.

public string renderTableFooter ( )
return string

The rendering result.

renderTableHeader() public method

Renders the table header.

public string renderTableHeader ( )
return string

The rendering result.

renderTableRow() public method

Renders a table row with the given data model and key.

public string renderTableRow ( $model, $key, $index )
$model mixed

The data model to be rendered

$key mixed

The key associated with the data model

$index integer

The zero-based index of the data model among the model array returned by $dataProvider.

return string

The rendering result

run() public method

Runs the widget.

public void run ( )