Управління коментарями

Управління коментарями включає оновлення, видалення та схвалення коментарів. Ці операції реалізовані як дії класу 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.