我想简化我的视图并利用 ClisView 功能(排序、分页……)。
(我让 foreach 在评论列表上循环并显示列表)。
为了实现这一点,我渲染了我的 _comments 视图
$this->renderPartial('_comments',array(
'dataProvider'=>$dataProvider,
在我的 _comments 视图中,为了列出与帖子相关的评论,我使用
<?php $this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_comment',
'template'=>"{items}\n{pager}",
)); ?>
_comment 视图只包含以下代码
<div class="comment">
<div class="content">
<?php
$this->beginWidget('CMarkdown', array('purifyOutput'=>true));
echo $data->content;
$this->endWidget();
?>
</div>
</div>
它工作正常,它显示正确的数据但不在正确的位置。
为了清楚起见,假设我有 2 个帖子,POST 1 有 3 条评论,POST 2 有 2 条评论。
如果我单击指向评论的 POST 1 链接,它看起来是正确的,它会显示
帖子 1 - 评论链接
评论 1(帖子 1)
评论 2(帖子 1)
评论 3(帖子 1)
发布 2- 评论链接
但如果我点击 POST 2 评论链接,它会显示以下内容
帖子 1 - 评论链接
评论 1(帖子 2)
评论 2(帖子 2)
帖子 2 - 评论链接
所以评论显示在帖子 1 下,而不是帖子 2。
我在逻辑上预期
帖子 1 - 评论链接
帖子 2 - 评论链接
评论 1(帖子 2)
评论 2(帖子 2)
我必须澄清帖子列表也由 cListView 显示,当我查看源代码时,生成的类名是相同的。
这是定义数据提供者的代码
$criteria=new CDbCriteria(array(
'condition'=>'post_id='.$post_id,
'order'=>'create_time DESC',
));
$dataProvider=new CActiveDataProvider('Comment', array(
'pagination'=>array(
'pageSize'=>Yii::app()->params['commentsPerPage'],
),
'criteria'=>$criteria,
));
$this->renderPartial('_comments',array(
'dataProvider'=>$dataProvider,
));
所以我的问题是,如何让 ClistView 生成不同的类名?
你知道我怎样才能正确显示评论吗?
预先感谢您的帮助