Від автора: вітаю вас, друзі. Ми продовжуємо цикл статей, присвячених знайомству з фреймворком Yii2. У цій статті ми з вами познайомимося з одним з віджетів для роботи з даними – це віджет Yii2 GridView.
У попередній статті ми з вами почали знайомитися з можливостями віджета для роботи з даними в Yii2 – GridView. Думаю, ви вже переконалися, що це дійсно потужний провайдер даних із безліччю можливостей, з яких ми розглянули тільки малу частину. Давайте продовжимо.
У нас в таблиці є поле Status, яке може приймати значення 0 (вимкнено) або 1 (включено). Нам ці значення цілком зрозумілі, але якщо ми зробимо сайт далекому від програмування користувачеві, то для нього було б куди зрозуміліше замість циферок, скажімо, слова Показується і Не показується. Давайте спробуємо замінити цифри на рядки. Закомментіруем простий висновок status і замість нього додамо такий код:
// ‘status’,
[
‘attribute’=>’status’,
‘value’ => function($data){
return $data->status ? ‘Показується’ : ‘Не показується’;
}
],
Тут в якості значення атрибута вказується анонімна функція, яка параметром приймає об’єкт даних поточного рядка, тобто поточну запис. В цьому об’єкті нас цікавить властивість status, значенням якого в нашому випадку може бути 0 або 1. Відповідно, ми повертаємо рядок Показується, якщо $data->status поверне true і Не показується – в іншому випадку. В результаті ми отримаємо таку картину:
Для краси картини не завадить виділити зеленим кольором активні запису і червоним – не активні. Для цього додамо трохи html і потрібне форматування:
[
‘attribute’=>’status’,
‘format’ => ‘raw’,
‘value’ => function($data){
return $data->status ? ‘Показується‘ : ‘Не показується‘;
}
],
Також вам може вимагати такий цікавий варіант, як показ включеної або вимкненій запису у вигляді чекбокса. Для цього можна використовувати клас CheckboxColumn і приблизно таку запис:
[
‘class’ => ‘yii\grid\CheckboxColumn’,
‘header’ => ‘Status’,
‘checkboxOptions’ => function ($model, $key, $index, $column) {
return $model->status ? [‘checked’ => “checked”] : [];
}
],
Тепер всі активні записи показано зазначеним чекбоксів. При бажанні ми можемо навісити JS, який буде відслідковувати подію зміни чекбоксов в таблиці і відправляти AJAX запит, який буде включати або вимикати запис.
На цьому сьогодні все. Більше про фреймворку ви можете дізнатися з наших безкоштовних або платних уроків. Також створення найпростішого блогу на Yii2 можна подивитися в цьому циклі уроків.