Управління коментарями
Управління коментарями включає оновлення, видалення та схвалення коментарів.
Ці операції реалізовані як дії класу CommentController
.
Оновлення та видалення коментарів
Код, що згенеровано утилітою Gii
для оновлення та видалення коментарів,
залишається, в основному, незмінним.
Схвалення коментарів
Нещодавно створені коментарі перебувають у статусі очікування схвалення і повинні бути схвалені, щоб стати видимими для гостьового користувача. Схвалення коментаря - це, головним чином, зміна стовпця стану коментаря.
Ми створюємо метод actionApprove()
у класі CommentController
наступним чином:
Вище, коли дія approve
викликається через запит POST,
ми викликаємо метод approve()
, визначений у моделі Comment
, для зміни статусу.
Потім ми переадресовуємо браузер користувача до сторінки, що відображає запис,
до якої відноситься цей коментар.
Звісно, потрібно створити і сам метод approve
у моделі Comment
:
Тут ми просто виставляємо властивість status
коментаря у approved
згідно
значенню відповідної константи класу Comment
:
Потім ми викликаємо метод update()
для того, щоб зберегти виставлену властивість у БД.
Ми також змінюємо метод actionIndex()
контролера CommentController
,
щоб показати всі коментарі і вивести першими ті, що очікують схвалення.
Варто відзначити, що у коді вище необхідно розвʼязати конфлікт імен стовпців,
вказавши що нам необхідні значення із основної таблиці tbl_comment
.
Сам конфлікт виникає так як і у tbl_post
і у tbl_comment
є стовпці
status
і create_time
.
Зробити це можна шляхом використання псевдонімів таблиць.
Як описано у керівництві,
псевдонім головної таблиці реляційного запиту завжди дорівнює t
.
Тому, ми додаємо t
до полів status
та create_time
.
Як і відображення записів, відображення index
контролера CommentController
використовує CListView для виведення списку коментарів, який, у свою чергу,
використовує /wwwroot/blog/protected/views/comment/_view.php
для виведення кожного
окремого коментаря. Ми не будемо детально розглядати цей механізм.
Зацікавлені читачі можуть вивчити відповідний файл демонстраційного
додатку: /wwwroot/yii/demos/blog/protected/views/comment/_view.php
.