[英]Sorting columns with CGridView in Yii based on function call in value
我的视图文件中包含以下代码:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
array(
'name' => 'Name',
'type'=>'raw',
'value' => 'CHtml::link(CHtml::encode($data->profile->first_name." ".$data->profile->last_name),array("match/view","id"=>$data->id))',
),
array(
'name' => 'Similiarity Score',
'type'=>'raw',
'value' => array($this, 'calculateScore'),
),
),
)); ?>
您会注意到第二列在控制器文件中调用了函数calculateScore($ data,$ row)。 无论如何,我可以根据这些分数对表格进行排序吗?
我假设您的结果来自数据库,并且您使用了CActiveDataProvider
或CSqlDataProvider
。 在这种情况下,您将必须以某种方式将calculateScore
的逻辑移到数据库查询中。 您可以将公共属性score
添加到模型类中,并将其添加到CDbCriteria
的select
属性中:
$criteria->select = array('*', '... SQL FOR SCORE CALC HERE ... AS score');
然后,您将可以按照CActiveDataProvider
的sort
定义中的score
进行sort
:
'sort' => array(
'attributes' => array(
// ...
'score',
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.