在帖子yii上显示评论

时间:2012-10-31 08:22:11

标签: yii

我只想显示属于每个帖子的评论,

我这样做了:  在帖子view.php中,我渲染了一个视图:

<?php 

 $this->renderPartial('/TblComments/_comment',array(

     'comments'=>$model_comments,
        ));

&GT;

这里是_comment.php

<div class="view">

    <b><?php echo CHtml::encode($data->getAttributeLabel('id')); ?>:</b>
    <?php echo CHtml::link(CHtml::encode($data->id), array('view', 'id'=>$data->id)); ?>
    <br />

    <b><?php echo CHtml::encode($data->getAttributeLabel('user_id')); ?>:</b>
    <?php echo CHtml::encode($data->user_id); ?>
    <br />

    <b><?php echo CHtml::encode($data->getAttributeLabel('post_id')); ?>:</b>
    <?php echo CHtml::encode($data->post_id); ?>
    <br />

    <b><?php echo CHtml::encode($data->getAttributeLabel('comment_body')); ?>:</b>
    <?php echo CHtml::encode($data->comment_body); ?>
    <br />


        <?php echo CHtml::link('Edit', array('tblComments/update', 'id'=>$data->id)); ?>
        <br/>
        <?php echo CHtml::link('Delete', array('tblComments/delete', 'id'=>$data->id)); ?>

</div>

现在的问题是:

Undefined variable: data 

我不知道为什么?请解释并帮助我!

1 个答案:

答案 0 :(得分:1)

那是因为你没有将$data变量传递给_comment.php,而是在调用$comments时只传递renderPartial()变量。

像上面示例那样采用$data param的文件通常被设计为在CListView或类似内容中使用,您需要传递data provider而不是数组(我假设$model_comments是?)。

CListView接受数据提供程序,并为数据提供程序中的每条记录转换为$data变量(就像您在_comments.php文件中看到的那样)。

假设$model_comments是模型的'comments'关系,这应该是一个模型对象数组?如果是这种情况,您不必创建与CListView一起使用的新CDataProvider,您可以使用CArrayDataProvide将该关系数组转换为可在CListView中使用的数据提供程序。所以这样的事情对你有用;

$this->widget('zii.widgets.CListView', array(
    'dataProvider'=>new CArrayDataProvider($model_comments, array()),
    'itemView'=>'/TblComments/_comment',
));

未经测试,您可能需要进行编辑才能尝试。