2012-09-24 70 views
1

我想實現類似Yii CActiveDataProvider解析複雜表達式的方式。以下面的代碼爲例,我基本上希望能夠在值中指定類似'date(「M j,Y」,$ data-> create_time)'「的東西。如何實現Yii CActiveDataProvider解析複雜表達式?

任何人都知道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

看起來像是在這裏的答案? http://www.yiiframework.com/doc/api/1.1/CComponent#evaluateExpression-detail – user1693090

回答

0

是否要創建一個可以評估PHP表達式的小部件?

有這種方法evaluateExpression這也是由CDataColumn使用。您可以在方法renderDataCellContent中看到CDataColumn如何使用它。

正如您在方法evaluateExpression中看到的代碼,它使用的是evalcall_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); 
      } 
     ), 
    ), 
)); 
+0

感謝佩特拉的迴應。基本上,我想創建自己的評估 – user1693090