От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. В этой статье мы с вами познакомимся с одним из виджетов для работы с данными – это виджет Yii2 GridView.
В предыдущей статье мы с вами начали знакомиться с возможностями виджета для работы с данными в Yii2 – GridView. Думаю, вы уже убедились, что это действительно мощный провайдер данных со множеством возможностей, из которых мы рассмотрели только малую часть. Давайте продолжим.
У нас в таблице имеется поле Status, которое может принимать значения 0 (выключено) или 1 (включено). Нам эти значения вполне понятны, но если мы сделаем сайт далекому от программирования пользователю, то для него было бы куда понятнее вместо циферок, скажем, слова Показывается и Не показывается. Давайте попробуем заменить цифры на строки. Закомментируем простой вывод status и вместо него добавим такой код:
1 2 3 4 5 6 7 |
// 'status', [ 'attribute'=>'status', 'value' => function($data){ return $data->status ? 'Показывается' : 'Не показывается'; } ], |
Здесь в качестве значения атрибута указывается анонимная функция, которая параметром принимает объект данных текущей строки, т.е. текущую запись. В этом объекте нас интересует свойство status, значением которого в нашем случае может быть 0 или 1. Соответственно, мы возвращаем строку Показывается, если $data->status вернет true и Не показывается – в противном случае. В итоге мы получим такую картину:
Для красоты картины не помешает выделить зеленым цветом активные записи и красным – не активные. Для этого добавим немного html и нужное форматирование:
1 2 3 4 5 6 7 |
[ 'attribute'=>'status', 'format' => 'raw', 'value' => function($data){ return $data->status ? '<span class="text-success">Показывается</span>' : '<span class="text-danger">Не показывается</span>'; } ], |
Также вам может потребовать такой интересный вариант, как показ включенной или выключенной записи в виде чекбокса. Для этого можно использовать класс CheckboxColumn и примерно такую запись:
1 2 3 4 5 6 7 |
[ 'class' => 'yii\grid\CheckboxColumn', 'header' => 'Status', 'checkboxOptions' => function ($model, $key, $index, $column) { return $model->status ? ['checked' => "checked"] : []; } ], |
Теперь все активные записи показаны отмеченным чекбоксом. При желании мы можем навесить JS, который будет отслеживать событие изменения чекбоксов в таблице и отправлять AJAX запрос, который будет включать или выключать запись.
На этом сегодня все. Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на Yii2 можно посмотреть в этом цикле уроков.