繁体   English   中英

根据值中的函数调用在Yii中使用CGridView对列进行排序

[英]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)。 无论如何,我可以根据这些分数对表格进行排序吗?

我假设您的结果来自数据库,并且您使用了CActiveDataProviderCSqlDataProvider 在这种情况下,您将必须以某种方式将calculateScore的逻辑移到数据库查询中。 您可以将公共属性score添加到模型类中,并将其添加到CDbCriteriaselect属性中:

$criteria->select = array('*', '... SQL FOR SCORE CALC HERE ... AS score');

然后,您将可以按照CActiveDataProvidersort定义中的score进行sort

'sort' => array(
    'attributes' => array(
        // ...
        'score',

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM