Віджет Yii2 DetailView

334

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

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

Як випливає з назви, цей віджет дозволяє організувати детальний перегляд запису. Тобто, якщо GridView, наприклад, дозволяє показати список статей сайту, то DetailView дозволяє реалізувати детальний перегляд окремої статті.

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

$model,
‘attributes’ => [
‘id’,
‘category_id’,
‘title’,
‘excerpt’,
‘text:n-текст’,
‘keywords’,
‘description’,
‘created’,
‘status’,
],
]) ?>

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

Віджет Yii2 DetailView

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

$model,
‘attributes’ => [
// ‘id’,
[
‘label’ => ‘№’,
‘attribute’ => ‘id’,
],
‘category_id’,
‘title’,
‘excerpt’,
‘text:n-текст’,
‘keywords’,
‘description’,
‘created’,
‘status’,
],
]) ?>

Віджет Yii2 DetailView

Якщо ми захочемо дозволити обробляти HTML для поля, приміром виведення зображення, а в даному випадку це буде поле Text, тоді достатньо використовувати відповідний formatter:

// ‘text:n-текст’,
‘text:html’,

Віджет Yii2 DetailView

І, звичайно ж, як і у випадку з GridView, тут ми можемо використовувати функції зворотного виклику для зміни значення поля. Наприклад, зараз поле статус виглядає так:

Віджет Yii2 DetailView

Змінимо циферку на більш зрозуміле повідомлення:

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

І отримаємо шуканий результат:

Віджет Yii2 DetailView

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