Yii2 GridView. Віджет виведення даних. Частина 2

400

Від автора: вітаю вас, друзі. Ми продовжуємо цикл статей, присвячених знайомству з фреймворком Yii2. У цій статті ми з вами познайомимося з одним з віджетів для роботи з даними – це віджет Yii2 GridView.

У попередній статті ми з вами почали знайомитися з можливостями віджета для роботи з даними в Yii2 – GridView. Думаю, ви вже переконалися, що це дійсно потужний провайдер даних із безліччю можливостей, з яких ми розглянули тільки малу частину. Давайте продовжимо.

У нас в таблиці є поле Status, яке може приймати значення 0 (вимкнено) або 1 (включено). Нам ці значення цілком зрозумілі, але якщо ми зробимо сайт далекому від програмування користувачеві, то для нього було б куди зрозуміліше замість циферок, скажімо, слова Показується і Не показується. Давайте спробуємо замінити цифри на рядки. Закомментіруем простий висновок status і замість нього додамо такий код:

// ‘status’,
[
‘attribute’=>’status’,
‘value’ => function($data){
return $data->status ? ‘Показується’ : ‘Не показується’;
}
],

Тут в якості значення атрибута вказується анонімна функція, яка параметром приймає об’єкт даних поточного рядка, тобто поточну запис. В цьому об’єкті нас цікавить властивість status, значенням якого в нашому випадку може бути 0 або 1. Відповідно, ми повертаємо рядок Показується, якщо $data->status поверне true і Не показується – в іншому випадку. В результаті ми отримаємо таку картину:

Yii2 GridView. Віджет виведення даних. Частина 2

Для краси картини не завадить виділити зеленим кольором активні запису і червоним – не активні. Для цього додамо трохи html і потрібне форматування:

[
‘attribute’=>’status’,
‘format’ => ‘raw’,
‘value’ => function($data){
return $data->status ? ‘Показується‘ : ‘Не показується‘;
}
],

Yii2 GridView. Віджет виведення даних. Частина 2

Також вам може вимагати такий цікавий варіант, як показ включеної або вимкненій запису у вигляді чекбокса. Для цього можна використовувати клас CheckboxColumn і приблизно таку запис:

[
‘class’ => ‘yii\grid\CheckboxColumn’,
‘header’ => ‘Status’,
‘checkboxOptions’ => function ($model, $key, $index, $column) {
return $model->status ? [‘checked’ => “checked”] : [];
}
],

Yii2 GridView. Віджет виведення даних. Частина 2

Тепер всі активні записи показано зазначеним чекбоксів. При бажанні ми можемо навісити JS, який буде відслідковувати подію зміни чекбоксов в таблиці і відправляти AJAX запит, який буде включати або вимикати запис.

На цьому сьогодні все. Більше про фреймворку ви можете дізнатися з наших безкоштовних або платних уроків. Також створення найпростішого блогу на Yii2 можна подивитися в цьому циклі уроків.