Yii - 如何覆盖/扩展核心文件

时间:2012-06-28 23:04:22

标签: yii override

我需要覆盖一些yii核心文件 - 特别是CGridColumn.php和CController.php。我需要确保在我的应用程序中引用这些类,而不是它们覆盖或扩展的核心文件。我该怎么做呢?它必须非常简单,但我似乎无法找到记录在案的“正确”方法。

2 个答案:

答案 0 :(得分:5)

如果要扩展基本控制器:

  1. 在protected / components目录中创建Controller.php:

    class Controller extends CController
        {
        public $newProperty;
    
        public function newMethod()
        {
        ...
        }
    }
    
  2. 确保在config:

    中导入Controller.php
    'import' => array(
        ...
        'application.components.Controller',
        ...
    ),
    
  3. 从Controller扩展控制器,而不是CController:

    class ExampleController extends Controller {
        ...
    }
    
  4. 如果你想扩展CGridColumn,1和2步是相同的,但在你的自定义类中不要忘记导入原始类:

        Yii::import('zii.widgets.grid.CGridColumn');
    
        class TestColumn extends CGridColumn
        {
            ...
        }
    

    然后在CGridView

    的列数组中使用它
        'columns' => array(
            array(
                'class' => 'TestColumn',
            ),  
        ),
    

答案 1 :(得分:2)