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

sil*_*tar 1 overriding yii

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

Cho*_*hoo 5

如果要扩展基本控制器:

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

    class Controller extends CController
        {
        public $newProperty;
    
        public function newMethod()
        {
        ...
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 确保在config中导入Controller.php:

    'import' => array(
        ...
        'application.components.Controller',
        ...
    ),
    
    Run Code Online (Sandbox Code Playgroud)
  3. 从Controller而不是CController扩展控制器:

    class ExampleController extends Controller {
        ...
    }
    
    Run Code Online (Sandbox Code Playgroud)

如果要扩展CGridColumn,1和2步骤是相同的​​,但在您的自定义类中不要忘记导入原始类:

    Yii::import('zii.widgets.grid.CGridColumn');

    class TestColumn extends CGridColumn
    {
        ...
    }
Run Code Online (Sandbox Code Playgroud)

然后在CGridView的列数组中使用它

    'columns' => array(
        array(
            'class' => 'TestColumn',
        ),  
    ),
Run Code Online (Sandbox Code Playgroud)