包括CDataColumn - 如何正确使用require_once和yii

时间:2014-07-26 18:48:32

标签: php yii

我正在尝试在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))'
         ),
        ),
    ),
))); 
 ?> 

1 个答案:

答案 0 :(得分:1)

您不必单独添加DataColumn。由于您已将其放在Components文件夹中,Yii会自动导入它。 See Import documentation,但是你需要在将新列添加到GridView时引用完整的类路径别名

<?php $this->widget('zii.widgets.CGridView',array(
  ....
  ....
  'columns'=>array(
    array(
     class'=>'application.components.DataColumn'
      ...
    )
  );