Вариантов тут несколько:
1. Создать свой класс ActionColumn и наследовать его от базового
ActionColumn. В этом классе переопределить нужную реализацию. Как советует
Дмитрий Дерепко
2. Замена в одном месте. Если требуется заменить только в одном месте имеет смысл использовать решение
Дмитрий
3. Сочетать всё это используя DI контейнер. Всегда рекомендую использовать такую глобальную подмену данных. Это более гибко. Для этого создаем Bootstrap класс с реализацией интерфейса
\yii\base\BootstrapInterface. Подключаем его в автозагрузку приложения (bootstrap в config.php) и заменяем всё что нам нужно:
$actionColumnSetting = [
'buttons' => [
'view' => function($name, $model, $key){
return Html::a('<i class="fas fa-eye" aria-hidden="true"></i>', ['update']);
},
'update' => function($name, $model, $key){
return Html::a('<i class="fas fa-pencil-alt" aria-hidden="true"></i>', ['update']);
},
'delete' => function($name, $model, $key){
return Html::a('<i class="fas fa-trash" aria-hidden="true"></i>', ['delete']);
}
],
];
\Yii::$container->set(ActionColumn::class, $actionColumnSetting);
Это удобно во всех случаях. Например, вы вдруг захотите во всех gridview использовать другие экшены редактирования. Заменить это будет просто. Необходимо update переименовать в edit. Либо вам во всех gridview нужна дополнительная кнопка "перенести Архив"
$actionColumnSetting = [
'buttons' => [
'view' => function($name, $model, $key){
return Html::a('<i class="fas fa-eye" aria-hidden="true"></i>', ['edit']);
},
'update' => function($name, $model, $key){
return Html::a('<i class="fas fa-pencil-alt" aria-hidden="true"></i>', ['update']);
},
'delete' => function($name, $model, $key){
return Html::a('<i class="fas fa-trash" aria-hidden="true"></i>', ['delete']);
},
'archive' => function($name, $model, $key){
return Html::a('<i class="fas fa-trash" aria-hidden="true"></i>', ['archive']);
}
],
];
\Yii::$container->set(ActionColumn::class, $actionColumnSetting);