Если вы хотите использовать yii\grid\ActionColumn
, вы должны определить кнопки в свойстве $buttons
и использовать обратные вызовы $visibleButtons
, чтобы определить, какие кнопки должны отображаться. Вы можете использовать свойство $template
, чтобы установить их порядок.
[
'class' => \yii\grid\ActionColumn::class,
'template' => '{process} {edit} {close}' //here will be all posible buttons
'buttons' => [
'process' => function($url, $model, $key) {
return Html::a(
'In Process',
[
'/tickets/inprocessticket',
'id' => $model->id
],
[
'class'=>'btn btn-warning',
'id' => 'btn_inProcessTicket'
]
);
},
'edit' => function($url, $model, $key) {
return Html::a(
'Edit Ticket',
[
'/tickets/editticket',
'id' => $dataProvider->id
],
[
'class'=>'btn btn-info',
'id' => 'btn_editTicket'
]
);
},
'close' => function ($url, $model, $key) {
return Html::a(
'Close Ticket',
[
'/tickets/closeticket',
'id' => $dataProvider->id
],
[
'class'=>'btn btn-danger',
'id' => 'btn_closeTicket'
]
);
},
],
'visibleButtons' => [
'process' => function($model, $key, $index) {
//the in process button should only be shown if state == 1
return $model->state == 1;
},
'edit' => function($model, $key, $index) {
//the edit button should only be shown if state == 3
return $model->state == 3;
},
'close' => function($model, $key, $index) {
//the close button should be shown in each state except of state == 3
return $model->state != 3;
},
],
]
Более подробную информацию о ActionColumn
и ее обратных вызовах можно найти в документации .