我正在尝试实现类似于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)',
),
),
));
答案 0 :(得分:0)
是否要创建可以评估PHP表达式的窗口小部件?
CDataColumn也使用此方法evaluateExpression
。您可以在方法renderDataCellContent
中看到CDataColumn如何使用它。
当您看到方法evaluateExpression
中的代码时,它正在使用eval
和call_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);
}
),
),
));