我有一个基于Yii的web应用程序,我在CGridView中显示文章信息。其中一个CGridView列显示每篇文章的总体评级为五星。(每篇文章由用户评分)
问题是,在显示文章的五星评级后,YII的内置排序和过滤被删除。要求是根据评级进行排序。我已经搜索过了,但无法找到如何修复它。感谢任何帮助或指导。我调用了一个函数来计算CGridView中的评级。
以下是CGridView代码。
<?php
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'customer-sites-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'title',
array('name'=>'author_id', 'value'=>'$data->author->name'),
array(
"header" => "Rating",
"type" => "raw",
"value"=>function($data){
$ratings=$data->ratingToString($data->id);
return '<div class="star-rating"
id="rating1result'.$ratings['roundedrating'].'"
style="background-position:0 -'.$ratings['roundedrating2'].'px; float:left;">
<div class="star"></div>
<div class="star"></div>
<div class="star"></div>
<div class="star"></div>
<div class="star"></div></div>';
},
),
array(
'class'=>'CButtonColumn',
),
),
)); ?>
-----编辑---------------
ArticleRating.php
return array(
'article' => array(self::BELONGS_TO, 'Article', 'article_id'),
);
Article.php
return array(
'articleRating' => array(self::HAS_MANY, 'ArticleRating', 'article_id'),
);
假设rating
是表中的一个字段,添加以下内容即可:
array(
'header'=>'Rating',
'type'=>'raw',
'value'=>function($data) {...},
'name'=>'rating', //this is the important part!
),