Yii2 GridView. Виджет вывода данных. Часть 1

Yii2 GridView. Виджет вывода данных

От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. В этой статье мы с вами познакомимся с одним из виджетов для работы с данными – это виджет Yii2 GridView.

Фреймворк Yii2 предлагает сразу несколько виджетов для отображения данных – это виджет DetailView, ListView и мощный виджет для работы с данными GridView, который мы и начнем рассматривать в данной статье.

Виджет GridView (или таблица данных) представляет из себя таблицу, которую очень удобно использовать в админке сайта. В нее построчно выводятся данные конкретной таблицы БД и управлять этими данными – одно удовольствие. В таблицу мы можем вывести только те данные, которые нам нужны, мы можем определять формат этих данных, сортировать их по любому полю, производить быстрые операции (переход к детальному просмотру записи, редактирование выбранной записи или ее удаление).

Прелесть работы с этим провайдером данных заключается еще и в том, что изначально нам не придется даже писать код, мы можем воспользоваться генератором кода Gii, который по умолчанию сгенерирует в индексных видах представление данных табличным списком, т.е. с использованием виджета GridView. Вот какой код генератор выдал для списка постов в админке:

<?= GridView::widget([
 'dataProvider' => $dataProvider,
 'columns' => [
 ['class' => 'yii\grid\SerialColumn'],

 'id',
 'category_id',
 'title',
 'excerpt',
 'text:ntext',
 // 'keywords',
 // 'description',
 // 'created',
 // 'status',

 ['class' => 'yii\grid\ActionColumn'],
 ],
]); ?>

А вот так выглядит результат работы данного кода на странице списка постов в админке:

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

Yii2 GridView. Виджет вывода данных

Каждая строка таблицы – это одна статья, т.е. одна запись из соответствующей таблицы в БД. По умолчанию фреймворк может вывести в таблицу не совсем те данные, которые нам нужны. Например, в моем случае краткий и полный текст записи явно лишние и выводить их не нужно. А вот поля created и status можно было бы вывести (в коде они есть, но закомментированы). Поправить это легко. Поля таблицы перечислены в свойстве columns виджета, просто уберем или закомментируем лишние поля и добавим или раскомментируем нужные.

<?= GridView::widget([
 'dataProvider' => $dataProvider,
 'columns' => [
 ['class' => 'yii\grid\SerialColumn'],

 'id',
 'category_id',
 'title',
 // 'excerpt',
 // 'text:ntext',
 // 'keywords',
 // 'description',
 'created',
 'status',

 ['class' => 'yii\grid\ActionColumn'],
 ],
]); ?>

В итоге мы получим следующую картину:

Yii2 GridView. Виджет вывода данных

Согласитесь, таблица стала выглядеть куда приятнее. Она стала компактной, в ней появились недостающие данные и управлять такой таблицей теперь гораздо удобнее. Идем дальше и попробуем воспользоваться возможностью настройки содержимого колонок. Например, в колонке Title у нас имеется наименование поста. Представим, что там могут быть теги HTML, например, обрамим наименование первой записи в теги b.

Yii2 GridView. Виджет вывода данных

Как видим, теги не работают, они преобразуются в HTML-сущности. Так происходит, потому что по умолчанию виджет использует для форматирования данных в этой колонке компонент Formatter и тип формата text. Если мы хотим, чтобы теги работали, нам достаточно изменить форматирование колонки. Для этого мы немного перепишем вывод указанной колонки, вот так:

<?= GridView::widget([
 'dataProvider' => $dataProvider,
 'columns' => [
 ['class' => 'yii\grid\SerialColumn'],

 'id',
 'category_id',
 // 'title',
 [
 'attribute' => 'title',
 'format' => 'html'
 ],
 // 'excerpt',
 // 'text:ntext',
 // 'keywords',
 // 'description',
 'created',
 'status',

 ['class' => 'yii\grid\ActionColumn'],
 ],
]); ?>

Здесь мы использовали formatter html для нужного нам атрибута title. Также можно вместо html использовать значение raw. В результате теги сработают:

Yii2 GridView. Виджет вывода данных

Такая возможность вряд ли нужна нам для заголовка, но безусловно потребуется, например, для показа миниатюры записи. Кроме форматтеров text (по умолчанию) и html (или raw) мы можем использовать и набор других методов форматирования, полный их список можно найти в документации.

Возьмем еще один пример, давайте изменим формат даты поста. Сейчас у нас выводится дата в формате YYYY-MM-DD. Пара примеров форматирования даты. Заменим простой вывод атрибута created таким:

// 'created',
[
 'attribute' => 'created',
 'format' => ['date', 'dd/MM/yyyy']
],

Результат:

Yii2 GridView. Виджет вывода данных

Также можно встретить и такой вариант форматирования даты:

[
 'attribute' => 'created',
 'format' => ['date', 'php:d/m/Y']
],

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

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Фреймворк YII2: теория и первая практика

Овладейте азами фреймворка Yii2 за 5 дней!

Получить

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree