簡體   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