我正在尝试在CGridView中使用yii扩展DataColumn。但是,我遇到错误,我正在使用require_once错误或我滥用DataColumn作为一个整体。
作为参考,这是我如何包括DataColumn.php,它位于yii中protected下的components文件夹中。
require_once(Yii::app()->basePath . '/components/DataColumn.php');
数据列看起来像这样
class DataColumn extends CDataColumn
{
/**
* @var boolean whether the htmlOptions values should be evaluated.
*/
public $evaluateHtmlOptions = false;
/*
...
然而,有了这个包含和这个DataColumn,我遇到了错误
include(CDataColumn.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory
这看起来很奇怪 - 这是因为正在扩展的课程不存在吗?或者我应该重命名DataColumn?我可能错误地调用了DataColumn吗?
_________________________ *编辑
我正在调用gridview这样的
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'account-grid',
'dataProvider'=>$dataProvider,
'filter'=>$model,
'columns'=>array(
'name',
'mobile_comp',
'msisdn',
// this formats the balance
array(
'class'=>'DataColumn'
'header'=>'Balance (Rwf)',
'name'=>'balance',
'evaluateHtmlOptions'=>true,
'htmlOptions'=>array('id'=>'balance'),
'value'=>function($data){
return number_format($data->balance);
},
),
/*
'company',
*/
array(
'class'=>'CButtonColumn',
'template'=>'{manage}',
'buttons'=>array
(
'manage' => array
(
'label'=>'Manage',
'url'=>'Yii::app()->createUrl("account/view", array("id"=>$data->id))'
),
),
),
)));
?>
答案 0 :(得分:1)
您不必单独添加DataColumn
。由于您已将其放在Components文件夹中,Yii会自动导入它。 See Import documentation,但是你需要在将新列添加到GridView时引用完整的类路径别名
<?php $this->widget('zii.widgets.CGridView',array(
....
....
'columns'=>array(
array(
class'=>'application.components.DataColumn'
...
)
);