1

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

4

2 回答 2

5

如果要扩展基本控制器:

  1. 在受保护的/组件目录中创建 Controller.php:

    class Controller extends CController
        {
        public $newProperty;
    
        public function newMethod()
        {
        ...
        }
    }
    
  2. 确保在配置中导入 Controller.php:

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

    class ExampleController extends Controller {
        ...
    }
    

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

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

    class TestColumn extends CGridColumn
    {
        ...
    }

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

    'columns' => array(
        array(
            'class' => 'TestColumn',
        ),  
    ),
于 2012-06-29T05:03:57.350 回答
2

扩展通用类以允许更好的定制

http://www.yiiframework.com/wiki/121/extending-common-classes-to-allow-better-customization/

于 2012-06-29T09:33:33.943 回答