Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Чтение и вывод многоуровневых комментариев - как?

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
AriaL
Гость
цитировать






СообщениеДобавлено: 02 Апр 2009 07:20:56    Заголовок сообщения: Чтение и вывод многоуровневых комментариев - как? Ответить с цитатой Изменить/удалить это сообщение

Доброе время суток.
На сайте планируется сделать Вопросы и Комментарии к ним (по сути, некая аналогия с ЖЖ, только Вопросы вместо Постов). У Вопроса и Комментов есть свои Авторы. Надо вывести Вопрос и Комменты к нему в виде дерева. Соответственно при выводе нужно еще указать Авторов.
Ассоциации моделей:
Код:
class Question extends AppModel {
var $belongsTo = array(
'User' => array('className' => 'User',
'foreignKey' => 'user_id',
'conditions' => '',
'fields' => array('User.id', 'User.nickname')
));
var $hasMany = array(
'Comments' => array('className' => 'Comment',
'foreignKey' => 'question_id',
'dependent' => false)
);
}

class Comment extends AppModel {
var $belongsTo = array(
'User' => array('className' => 'User',
'foreignKey' => 'user_id',
'fields' => 'User.nickname',
));
var $hasMany = array(
'ChildComment' => array('className' => 'Comment',
'foreignKey' => 'parent_id',
'dependent' => false,
));
}

Я сделал в модели Question метод, который должен возвращать по указанному questionId Вопрос и массив Комментариев к нему:
Код:
$this->contain(array('Comments'=>array('ChildComment', 'conditions'=>array('Comments.parent_id' => null)),'User'));
$res = $this->read(null, $questionId);
Возвращаются данные в следующем формате:
Код:
array
  'Question' =>
    array (массив полей Вопроса)
  'User' =>
    array (массив полей Автора Вопроса)
  'Comments' =>
    array
      0 =>
        array (массив полей Комментария)
      1 =>
        array ...
Но мне, во-первых, нужно получить Автора для каждого Комментария, во-вторых, не возвращаются комментарии второго и далее уровней, а в-третьих, я до конца не могу понять, как мне впотом вывести Комментарии именно в виде древовидной структуры - по идее нужна рекурсивная функция, которая при выводе элемента будет его проверять на предмет наличия у него подмассивов и переходить к ним. Но как в ctp-файле организовать ее, пока непонятно.
Вернуться к началу
michas

цитировать



Зарегистрирован: 28 Янв 2008 11:28:31
Сообщения: 123

СообщениеДобавлено: 02 Апр 2009 21:25:37    Заголовок сообщения: Ответить с цитатой

почитай про TreeBehavior
http://book.cakephp.org/view/91/Tree
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru