[英]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.