CakePHP用分页处理评论
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CakePHP用分页处理评论相关的知识,希望对你有一定的参考价值。
有没有办法在cakephp中使用树行为对注释进行分页?我应该使用树行为还是制作我自己的代码来查看评论?
对不起,以前有人问过。我发现了一篇文章:Managing Hierarchical Data in 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个表,一个用于根,第二个用于线程注释。我找不到解决方案。
答案
您必须通过paginate在控制器中手动执行此操作。
关键是正确命令mysql查询不是通过id查找注释,首先是parent_id,然后是id(列只是示例) - 这适用于2级注释:
$this->paginate = array(
'recursive' => -1,
'conditions' => array(
'Comment.blog_id' => 0,
),
'order' => array('parent_id', 'id'),
'limit' => 10
);
$this->set('comments', $this->paginate('Comment'));
另一答案
你不能。我所做的是在完整的线程注释视图和平面分页列表之间切换的链接。
另一答案
恕我直言:您认为分页评论是个好主意吗?只需最小化页面上的空间注释,并将它们放入一个浮点数。不要让你的用户点击太多链接...
另一答案
你可以做到这一点
你的模态代码:
var $hasMany = array(
'Pages' => array(
'className' => 'Page',
'foreignKey' => 'parent_id',
)
);
你的控制器代码:
$this->paginate = array(
'Page' => array(
'contain' => array(
'Pages'
),
'conditions' => array(
'Page.parent_id' => null
)
)
);
$pages = $this->paginate();
另一答案
您应该使用树行为并按lft排序。
以上是关于CakePHP用分页处理评论的主要内容,如果未能解决你的问题,请参考以下文章