ツリーの動作で CakePHP のコメントをページ分割する方法はありますか? とにかくツリー動作を使用するか、コメントを表示する独自のコードを作成する必要がありますか?
申し訳ありませんが、これは以前に尋ねられました。記事を見つけました: MySQL での階層データの管理
...そして私のソリューションを投稿します。
いいえ、良い解決策が見つかりませんでした。車輪の再発明はしたくありません。ケーキのように作りたいのです。
コメントを再帰的に出力するためのヘルパーを作成しました。
# view/helpers/comments
class CommentsHelper extends AppHelper{
public function printComments($comments = array(), $params = array()){
if (empty($comments) || !is_array($comments)) return false;
echo '<ul id="comments-'.$comments[0]['Forum']['id'].'">';
if (is_array($comments)){
foreach($comments as $comment):
?>
<li id="<?php echo $comment['Forum']['id']; ?>">
<div class="inner">
<h4><?php echo $comment['Forum']['title']; ?></h4>
<div class="meta">
<?php echo $comment['User']['first_name']; ?>
</div>
<div class="content">
<?php echo $comment['Forum']['content']; ?>
</div>
</div>
<?php
if (isset ($comment['children']))
if (is_array($comment['children'])){
if (!empty($comment['children'])) $this->printComments($comment['children']);
}
echo '</li>';
endforeach;
}
else{
echo '<li>'.$comment['Forum']['title'].'</li>';
}
echo '</ul>';
}
データベースからデータを取得する方法は次のとおりです。
# controllers/forums.php
$this->set('tree', $this->Forum->find('threaded'););
問題は、コメントをどのように改ページするかです。
現在、私は 2 つのテーブルを使用しています。1 つはルート用、もう 1 つはスレッド化されたコメント用です。解決策が見つかりませんでした。