Виджет Yii2 DetailView

Виджет Yii2 DetailView

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

В предыдущих статьях мы с вами знакомились с очень мощным виджетом для работы с данными – widget Yii2 GridView. Данный виджет идеально подходит для админки сайта и позволяет в табличном виде вывести список записей. Работать с таким представлением данных пользователям достаточно удобно. Однако фреймворк не ограничивается только этим виджетом и предлагает нам еще несколько. Одним из таких является виджет DetailView.

Как следует из названия, этот виджет позволяет организовать детальный просмотр записи. Т.е., если GridView, к примеру, позволяет показать список статей сайта, то DetailView позволяет реализовать детальный просмотр отдельной статьи.

Генератор кода Gii по умолчанию генерирует примерно такой код для DetailView:

<?= DetailView::widget([
 'model' => $model,
 'attributes' => [
 'id',
 'category_id',
 'title',
 'excerpt',
 'text:ntext',
 'keywords',
 'description',
 'created',
 'status',
 ],
]) ?>

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

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

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

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

Виджет Yii2 DetailView

Для подробного просмотра этого вполне достаточно. Однако, задачи бывают разные, и вам вполне может потребоваться внести некоторые коррективы в вывод. Работа с DetailView очень похожа на работу с GridView. Например, если мы захотим переименовать какое-то поле, скажем ID, то сделать это можно так:

<?= DetailView::widget([
 'model' => $model,
 'attributes' => [
 // 'id',
 [
 'label' => '№',
 'attribute' => 'id',
 ],
 'category_id',
 'title',
 'excerpt',
 'text:ntext',
 'keywords',
 'description',
 'created',
 'status',
 ],
]) ?>

Виджет Yii2 DetailView

Если мы захотим разрешить обрабатывать HTML для поля, к примеру вывода изображения, а в данном случае это будет поле Text, тогда достаточно использовать соответствующий formatter:

// 'text:ntext',
'text:html',

Виджет Yii2 DetailView

И, конечно же, как и в случае с GridView, здесь мы можем использовать функции обратного вызова для изменения значения поля. Например, сейчас поле статус выглядит так:

Виджет Yii2 DetailView

Изменим циферку на более понятное сообщение:

// 'status',
[
 'attribute' => 'status',
 'format' => 'raw',
 'value' => function($data){
 return $data->status ? '<span class="text-success">Показывается</span>' : '<span class="text-danger">Не показывается</span>';
 }
],

И получим искомый результат:

Виджет Yii2 DetailView

Как видим, в DetailView все достаточно просто и очень похоже на GridView. На этом сегодня все. Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на 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