Вот так я, наконец, заработал, он будет работать, пока вы не найдете лучшее решение. Я предполагаю, что project_id является внешним ключом в вашей таблице сообщений. Это создаст (используя gii) необходимое отношение HAS_MANY в модели вашего проекта, что, в свою очередь, позволяет нам легко получать доступ к публикациям проекта, не вызывая метод CallProjectPosts.
Так что измените ваш пост (_post.php):
<?php
echo '<h2>Project: '. CHTML::encode($data->title).' </h2>';
echo '<div class="listViewBorder">';
$relatedPosts=new CArrayDataProvider($data->posts, // this is where the HAS_MANY relation comes into play
array(
'pagination'=>array(
'pageSize'=>1, // whatever your size was
)
)
);
$this->widget('zii.widgets.CListView',
array(
'dataProvider'=>$relatedPosts,
'id'=>'postListView'.$data->id,
'itemView'=>'_postDetail',
'enablePagination'=>true,
));
echo '</div>'
?>
Для списка проектов:
<?php
$this->pageTitle=Yii::app()->name . ' - Project Post Details';
echo '<div class="listViewBorder">';
$this->widget('zii.widgets.CListView',
array(
'dataProvider'=>$dataProvider,
'id'=>'projectListView',
'itemView'=>'_post', // refers to the partial view
'enablePagination'=>true,
'ajaxUpdate'=>false
)
);
echo '</div><br />'
?>
Как вы увидите, я отключил ajaxUpdate дляпросмотр списка проектов, если он включен, то решение не будет работать, поэтому, если вам необходимо отображать / обновлять список проектов также через ajax, то это не будет работать, в настоящее время только сообщения проекта обновляются через ajax.Надеюсь, это поможет.