@Monitorkin

Как в gridview yii2 вывести вместо иконок glyphicon fontawesome?

Как в gridview yii2 вывести вместо иконок glyphicon которые выводятся по умолчанию
вывести fontawesome?
Потому что хочу fontawesome! :)
  • Вопрос задан
  • 1097 просмотров
Решения вопроса 3
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
Вариантов тут несколько:

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);

Ответ написан
Комментировать
xEpozZ
@xEpozZ
Веб-разработчик
Переопределить ActionColumn и заменить
glyphicon на fa
https://github.com/yiisoft/yii2/blob/master/framew...
Ответ написан
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
Можно конечно же переопределить, как советует Дмитрий Дерепко.
А можно сделать следующим образом.
Необходимо настроить вывод кнопок.
Вот как-то так.
[
'class' => 'yii\grid\ActionColumn',
  'buttons' => [
     'update' => function($name, $model, $key){
        return Html::a('<i class="fa fa-plus fa-lg" aria-hidden="true"></i>', ['update']);
      }
   ]
]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы