1

我正在尝试实现类似于 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)',
    ),
),

));

4

1 回答 1

0

您想创建一个可以评估 PHP 表达式的小部件吗?

evaluateExpressionCDataColumn 也使用了这种方法。您可以在方法中看到 CDataColumn 如何使用它renderDataCellContent

正如您在方法中看到的代码evaluateExpression,它使用evaland call_user_func

如果你使用 PHP 5.3,你可以使用匿名函数。例如

$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);
            }
        ),
    ),
));
于 2012-09-24T09:49:58.800 回答