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 

何故かはわからない ?説明して助けてください!

4

1 に答える 1

1

$dataこれは、 に変数を渡していないためです。を呼び出すときに変数_comment.phpを渡すだけです。$commentsrenderPartial()

上記の例のようにパラメーターを取るファイルは、通常、配列ではなくデータプロバイダー$dataを渡す必要がある CListView などで使用するように設計されています(私が想定しているように?)。$model_comments

CListView はデータ プロバイダーを受け取り、データ プロバイダー内の各レコードの (ファイル$dataに表示されるような) 変数に変換します。_comments.php

モデルの「コメント」関係であると仮定する$model_commentsと、これはモデル オブジェクトの配列である必要がありますか? その場合、CListView で使用する新しい CDataProvider を作成する必要がない場合は、CArrayDataProvider を使用して、そのリレーション配列をCListViewで使用できるデータ プロバイダーに変換できます。したがって、このようなものがうまくいくかもしれません。

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

テストされていないため、好みに合わせて編集する必要がある場合があります。

于 2012-10-31T08:36:00.743 に答える