2012-10-31 177 views
0

我只是想顯示屬於每個帖子的評論,顯示註釋

我已經做到了這一點: 在帖子view.php我有渲染視圖:

<?php 

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

    'comments'=>$model_comments, 
     )); 

>

這裏是_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 

我不知道爲什麼?請解釋並幫助我!

+0

與[我的回答,對你的其他問題](http://stackoverflow.com/a/13153847/720508)我認爲你應該能夠解決這個問題,如果不是,那麼請顯示你的控制器動作,呈現_view .php_文件 –

回答

1

這是因爲您沒有將$data變量傳遞給_comment.php,因此當您撥打renderPartial()時,只傳遞$comments變量。即採取$data PARAM像你上面的例子

文件通常被設計成一個CListView中或類似的,這你需要傳遞一個data provider,而不是一個陣列中使用(我假設$model_comments是什麼?)。

CListView需要一個數據提供者,並將其轉換爲$data變量(如您在_comments.php文件中看到的那樣),用於數據提供者中的每條記錄。

假設$model_comments是您的模型的'評論'關係,這應該是一個模型對象數組?如果是這種情況,您不必創建一個新的CDataProvider用於CListView,則可以使用CArrayDataProvide將該關係數組轉換爲可用於CListView的數據提供程序。所以這樣的事情可能對你有用。

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

未經測試,您可能需要編輯才能品嚐。