如何实现Yii CActiveDataProvider解析复杂表达式?

时间:2012-09-24 09:35:26

标签: php yii

我正在尝试实现类似于Yii CActiveDataProvider解析复杂表达式的方法。以下面的代码为例,我基本上希望能够指定类似' date(" M j,Y",$ data-> create_time)'在价值中。

任何人都知道Yii中的哪个班级会提供良好的洞察力?我查看了CDataColumn课程,但运气不太好。

$this-widget('zii.widgets.grid.CGridView', array(
'dataProvider'=$dataProvider,
'columns'=array(
    'title',          // display the 'title' attribute
    'category.name',  // display the 'name' attribute of the 'category' relation
    'content:html',   // display the 'content' attribute as purified HTML
    array(            // display 'create_time' using an expression
        'name'='create_time',
        'value'='date("M j, Y", $data-create_time)',
    ),
),

));

1 个答案:

答案 0 :(得分:0)

是否要创建可以评估PHP表达式的窗口小部件?

CDataColumn也使用此方法evaluateExpression。您可以在方法renderDataCellContent中看到CDataColumn如何使用它。

当您看到方法evaluateExpression中的代码时,它正在使用evalcall_user_func

如果你使用PHP 5.3,你可以使用匿名函数。 e.g。

$this-widget('zii.widgets.grid.CGridView', array(
    'dataProvider' = $dataProvider,
    'columns' = array(
        'title',          // display the 'title' attribute
        'category.name',  // display the 'name' attribute of the 'category' relation
        'content:html',   // display the 'content' attribute as purified HTML
        array(            // display 'create_time' using an expression
            'name' => 'create_time',
            'value' => function($data){
                return date("M j, Y", $data->create_time);
            }
        ),
    ),
));