HumHub Documentation (unofficial)

ActionColumn extends Column
in package

ActionColumn is a column for the [[GridView]] widget that displays buttons for viewing and manipulating the items.

To add an ActionColumn to the gridview, add it to the [[GridView::columns|columns]] configuration as follows:

'columns' => [
    // ...
    [
        'class' => ActionColumn::class,
        // you may configure additional properties here
    ],
]

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

Tags
author

Qiang Xue qiang.xue@gmail.com

since
2.0

Table of Contents

Properties

$buttonOptions  : array<string|int, mixed>
$buttons  : array<string|int, mixed>
$content  : callable
$contentOptions  : array<string|int, mixed>|Closure
$controller  : string|null
$filterOptions  : array<string|int, mixed>
$footer  : string
$footerOptions  : array<string|int, mixed>
$grid  : GridView
$header  : string|null
$headerOptions  : array<string|int, mixed>
$icons  : array<string|int, mixed>
$options  : array<string|int, mixed>
$template  : string
$urlCreator  : callable|null
$visible  : bool
$visibleButtons  : array<string|int, mixed>

Methods

__call()  : mixed
Calls the named method which is not a class method.
__construct()  : mixed
Constructor.
__get()  : mixed
Returns the value of an object property.
__isset()  : bool
Checks if a property is set, i.e. defined and not null.
__set()  : mixed
Sets value of an object property.
__unset()  : mixed
Sets an object property to null.
canGetProperty()  : bool
Returns a value indicating whether a property can be read.
canSetProperty()  : bool
Returns a value indicating whether a property can be set.
className()  : string
Returns the fully qualified name of this class.
createUrl()  : string
Creates a URL for the given action and model.
hasMethod()  : bool
Returns a value indicating whether a method is defined.
hasProperty()  : bool
Returns a value indicating whether a property is defined.
init()  : mixed
Initializes the object.
renderDataCell()  : string
Renders a data cell.
renderFilterCell()  : mixed
Renders the filter cell.
renderFooterCell()  : mixed
Renders the footer cell.
renderHeaderCell()  : mixed
Renders the header cell.
getHeaderCellLabel()  : string
Returns header cell label.
initDefaultButton()  : mixed
Initializes the default button rendering callback for single button.
initDefaultButtons()  : mixed
Initializes the default button rendering callbacks.
renderDataCellContent()  : string
Renders the data cell content.
renderFilterCellContent()  : string
Renders the filter cell content.
renderFooterCellContent()  : string
Renders the footer cell content.
renderHeaderCellContent()  : string
Renders the header cell content.

Properties

$buttonOptions

public array<string|int, mixed> $buttonOptions = []

html options to be applied to the [[initDefaultButton()|default button]].

Tags
since
2.0.4

$buttons

public array<string|int, mixed> $buttons = []

button rendering callbacks. The array keys are the button names (without curly brackets), and the values are the corresponding button rendering callbacks. The callbacks should use the following signature:

function ($url, $model, $key) {
    // return the button HTML code
}

where $url is the URL that the column creates for the button, $model is the model object being rendered for the current row, and $key is the key of the model in the data provider array.

You can add further conditions to the button, for example only display it, when the model is editable (here assuming you have a status field that indicates that):

[
    'update' => function ($url, $model, $key) {
        return $model->status === 'editable' ? Html::a('Update', $url) : '';
    },
],

$content

public callable $content

This is a callable that will be used to generate the content of each cell. The signature of the function should be the following: function ($model, $key, $index, $column). Where $model, $key, and $index refer to the model, key and index of the row currently being rendered and $column is a reference to the [[Column]] object.

$contentOptions

public array<string|int, mixed>|Closure $contentOptions = []

the HTML attributes for the data cell tag. This can either be an array of attributes or an anonymous function ([[Closure]]) that returns such an array. The signature of the function should be the following: function ($model, $key, $index, $column). Where $model, $key, and $index refer to the model, key and index of the row currently being rendered and $column is a reference to the [[Column]] object. A function may be used to assign different attributes to different rows based on the data in that row.

Tags
see
Html::renderTagAttributes()

for details on how attributes are being rendered.

$controller

public string|null $controller

the ID of the controller that should handle the actions specified here. If not set, it will use the currently active controller. This property is mainly used by [[urlCreator]] to create URLs for different actions. The value of this property will be prefixed to each action name to form the route of the action.

$filterOptions

public array<string|int, mixed> $filterOptions = []

the HTML attributes for the filter cell tag.

Tags
see
Html::renderTagAttributes()

for details on how attributes are being rendered.

public string $footer

the footer cell content. Note that it will not be HTML-encoded.

$footerOptions

public array<string|int, mixed> $footerOptions = []

the HTML attributes for the footer cell tag.

Tags
see
Html::renderTagAttributes()

for details on how attributes are being rendered.

$header

public string|null $header

the header cell content. Note that it will not be HTML-encoded.

$headerOptions

public array<string|int, mixed> $headerOptions = ['class' => 'action-column']

the HTML attributes for the header cell tag.

$icons

public array<string|int, mixed> $icons = ['eye-open' => '<svg aria-hidden="true" style="display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em;width:1.125em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M573 241C518 136 411 64 288 64S58 136 3 241a32 32 0 000 30c55 105 162 177 285 177s230-72 285-177a32 32 0 000-30zM288 400a144 144 0 11144-144 144 144 0 01-144 144zm0-240a95 95 0 00-25 4 48 48 0 01-67 67 96 96 0 1092-71z"/></svg>', 'pencil' => '<svg aria-hidden="true" style="display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em;width:1em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M498 142l-46 46c-5 5-13 5-17 0L324 77c-5-5-5-12 0-17l46-46c19-19 49-19 68 0l60 60c19 19 19 49 0 68zm-214-42L22 362 0 484c-3 16 12 30 28 28l122-22 262-262c5-5 5-13 0-17L301 100c-4-5-12-5-17 0zM124 340c-5-6-5-14 0-20l154-154c6-5 14-5 20 0s5 14 0 20L144 340c-6 5-14 5-20 0zm-36 84h48v36l-64 12-32-31 12-65h36v48z"/></svg>', 'trash' => '<svg aria-hidden="true" style="display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em;width:.875em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M32 464a48 48 0 0048 48h288a48 48 0 0048-48V128H32zm272-256a16 16 0 0132 0v224a16 16 0 01-32 0zm-96 0a16 16 0 0132 0v224a16 16 0 01-32 0zm-96 0a16 16 0 0132 0v224a16 16 0 01-32 0zM432 32H312l-9-19a24 24 0 00-22-13H167a24 24 0 00-22 13l-9 19H16A16 16 0 000 48v32a16 16 0 0016 16h416a16 16 0 0016-16V48a16 16 0 00-16-16z"/></svg>']

button icons. The array keys are the icon names and the values the corresponding html:

[
    'eye-open' => '<svg ...></svg>',
    'pencil' => Html::tag('span', '', ['class' => 'glyphicon glyphicon-pencil'])
]

Defaults to FontAwesome 5 free svg icons.

Tags
since
2.0.42
see
https://fontawesome.com

$options

public array<string|int, mixed> $options = []

the HTML attributes for the column group tag.

Tags
see
Html::renderTagAttributes()

for details on how attributes are being rendered.

$template

public string $template = '{view} {update} {delete}'

the template used for composing each cell in the action column. Tokens enclosed within curly brackets are treated as controller action IDs (also called button names in the context of action column). They will be replaced by the corresponding button rendering callbacks specified in [[buttons]]. For example, the token {view} will be replaced by the result of the callback buttons['view']. If a callback cannot be found, the token will be replaced with an empty string.

As an example, to only have the view, and update button you can add the ActionColumn to your GridView columns as follows:

['class' => 'yii\grid\ActionColumn', 'template' => '{view} {update}'],
Tags
see
buttons

$urlCreator

public callable|null $urlCreator

a callback that creates a button URL using the specified model information. The signature of the callback should be the same as that of [[createUrl()]] Since 2.0.10 it can accept additional parameter, which refers to the column instance itself:

function (string $action, mixed $model, mixed $key, integer $index, ActionColumn $this) {
    //return string;
}

If this property is not set, button URLs will be created using [[createUrl()]].

$visible

public bool $visible = true

whether this column is visible. Defaults to true.

$visibleButtons

public array<string|int, mixed> $visibleButtons = []

visibility conditions for each button. The array keys are the button names (without curly brackets), and the values are the boolean true/false or the anonymous function. When the button name is not specified in this array it will be shown by default. The callbacks must use the following signature:

function ($model, $key, $index) {
    return $model->status === 'editable';
}

Or you can pass a boolean value:

[
    'update' => \Yii::$app->user->can('update'),
],
Tags
since
2.0.7

Methods

__call()

Calls the named method which is not a class method.

public __call(string $name, array<string|int, mixed> $params) : mixed

Do not call this method directly as it is a PHP magic method that will be implicitly called when an unknown method is being invoked.

Parameters
$name : string

the method name

$params : array<string|int, mixed>

method parameters

Tags
throws
UnknownMethodException

when calling unknown method

Return values
mixed

the method return value

__construct()

Constructor.

public __construct([array<string|int, mixed> $config = [] ]) : mixed

The default implementation does two things:

  • Initializes the object with the given configuration $config.
  • Call [[init()]].

If this method is overridden in a child class, it is recommended that

  • the last parameter of the constructor is a configuration array, like $config here.
  • call the parent implementation at the end of the constructor.
Parameters
$config : array<string|int, mixed> = []

name-value pairs that will be used to initialize the object properties

__get()

Returns the value of an object property.

public __get(string $name) : mixed

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing $value = $object->property;.

Parameters
$name : string

the property name

Tags
throws
UnknownPropertyException

if the property is not defined

throws
InvalidCallException

if the property is write-only

see
__set()
Return values
mixed

the property value

__isset()

Checks if a property is set, i.e. defined and not null.

public __isset(string $name) : bool

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing isset($object->property).

Note that if the property is not defined, false will be returned.

Parameters
$name : string

the property name or the event name

Tags
see
https://www.php.net/manual/en/function.isset.php
Return values
bool

whether the named property is set (not null).

__set()

Sets value of an object property.

public __set(string $name, mixed $value) : mixed

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing $object->property = $value;.

Parameters
$name : string

the property name or the event name

$value : mixed

the property value

Tags
throws
UnknownPropertyException

if the property is not defined

throws
InvalidCallException

if the property is read-only

see
__get()

__unset()

Sets an object property to null.

public __unset(string $name) : mixed

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing unset($object->property).

Note that if the property is not defined, this method will do nothing. If the property is read-only, it will throw an exception.

Parameters
$name : string

the property name

Tags
throws
InvalidCallException

if the property is read only.

see
https://www.php.net/manual/en/function.unset.php

canGetProperty()

Returns a value indicating whether a property can be read.

public canGetProperty(string $name[, bool $checkVars = true ]) : bool

A property is readable if:

  • the class has a getter method associated with the specified name (in this case, property name is case-insensitive);
  • the class has a member variable with the specified name (when $checkVars is true);
Parameters
$name : string

the property name

$checkVars : bool = true

whether to treat member variables as properties

Tags
see
canSetProperty()
Return values
bool

whether the property can be read

canSetProperty()

Returns a value indicating whether a property can be set.

public canSetProperty(string $name[, bool $checkVars = true ]) : bool

A property is writable if:

  • the class has a setter method associated with the specified name (in this case, property name is case-insensitive);
  • the class has a member variable with the specified name (when $checkVars is true);
Parameters
$name : string

the property name

$checkVars : bool = true

whether to treat member variables as properties

Tags
see
canGetProperty()
Return values
bool

whether the property can be written

className()

Returns the fully qualified name of this class.

public static className() : string
Tags
deprecated

since 2.0.14. On PHP >=5.5, use ::class instead.

Return values
string

the fully qualified name of this class.

createUrl()

Creates a URL for the given action and model.

public createUrl(string $action, ActiveRecordInterface $model, mixed $key, int $index) : string

This method is called for each button and each row.

Parameters
$action : string

the button name (or action ID)

$model : ActiveRecordInterface

the data model

$key : mixed

the key associated with the data model

$index : int

the current row index

Return values
string

the created URL

hasMethod()

Returns a value indicating whether a method is defined.

public hasMethod(string $name) : bool

The default implementation is a call to php function method_exists(). You may override this method when you implemented the php magic method __call().

Parameters
$name : string

the method name

Return values
bool

whether the method is defined

hasProperty()

Returns a value indicating whether a property is defined.

public hasProperty(string $name[, bool $checkVars = true ]) : bool

A property is defined if:

  • the class has a getter or setter method associated with the specified name (in this case, property name is case-insensitive);
  • the class has a member variable with the specified name (when $checkVars is true);
Parameters
$name : string

the property name

$checkVars : bool = true

whether to treat member variables as properties

Tags
see
canGetProperty()
see
canSetProperty()
Return values
bool

whether the property is defined

renderDataCell()

Renders a data cell.

public renderDataCell(mixed $model, mixed $key, int $index) : string
Parameters
$model : mixed

the data model being rendered

$key : mixed

the key associated with the data model

$index : int

the zero-based index of the data item among the item array returned by [[GridView::dataProvider]].

Return values
string

the rendering result

renderFilterCell()

Renders the filter cell.

public renderFilterCell() : mixed

renderFooterCell()

Renders the footer cell.

public renderFooterCell() : mixed

renderHeaderCell()

Renders the header cell.

public renderHeaderCell() : mixed

getHeaderCellLabel()

Returns header cell label.

protected getHeaderCellLabel() : string

This method may be overridden to customize the label of the header cell.

Tags
since
2.0.8
Return values
string

label

initDefaultButton()

Initializes the default button rendering callback for single button.

protected initDefaultButton(string $name, string $iconName[, array<string|int, mixed> $additionalOptions = [] ]) : mixed
Parameters
$name : string

Button name as it's written in template

$iconName : string

The part of Bootstrap glyphicon class that makes it unique

$additionalOptions : array<string|int, mixed> = []

Array of additional options

Tags
since
2.0.11

initDefaultButtons()

Initializes the default button rendering callbacks.

protected initDefaultButtons() : mixed

renderDataCellContent()

Renders the data cell content.

protected renderDataCellContent(mixed $model, mixed $key, mixed $index) : string
Parameters
$model : mixed

the data model

$key : mixed

the key associated with the data model

$index : mixed

the zero-based index of the data model among the models array returned by [[GridView::dataProvider]].

Return values
string

the rendering result

renderFilterCellContent()

Renders the filter cell content.

protected renderFilterCellContent() : string

The default implementation simply renders a space. This method may be overridden to customize the rendering of the filter cell (if any).

Return values
string

the rendering result

renderFooterCellContent()

Renders the footer cell content.

protected renderFooterCellContent() : string

The default implementation simply renders [[footer]]. This method may be overridden to customize the rendering of the footer cell.

Return values
string

the rendering result

renderHeaderCellContent()

Renders the header cell content.

protected renderHeaderCellContent() : string

The default implementation simply renders [[header]]. This method may be overridden to customize the rendering of the header cell.

Return values
string

the rendering result


        
On this page

Search results