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

Управление комментариями включает обновление, удаление и одобрение комментариев. Эти операции реализованы как действия класса 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.