Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii-如何覆盖/扩展核心文件_Yii_Overriding - Fatal编程技术网

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

Yii-如何覆盖/扩展核心文件,yii,overriding,Yii,Overriding,我需要覆盖一些yii核心文件——具体地说,CGridColumn.php和CController.php。我需要确保这些类在我的应用程序中被引用,而不是它们覆盖或扩展的核心文件。我该怎么做?它必须非常简单,但我似乎找不到一个有文档记录的“正确”方法来完成它。如果您想扩展基本控制器: class ExampleController extends Controller { ... } 在受保护/组件目录中创建Controller.php: class Controller extends

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

如果您想扩展基本控制器:

class ExampleController extends Controller {
    ...
}
  • 在受保护/组件目录中创建Controller.php:

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

    'import' => array(
        ...
        'application.components.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',
            ),  
        ),
    

    如果要扩展基本控制器:

    class ExampleController extends Controller {
        ...
    }
    
  • 在受保护/组件目录中创建Controller.php:

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

    'import' => array(
        ...
        'application.components.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',
            ),  
        ),
    

    扩展通用类以实现更好的定制


    扩展通用类以实现更好的定制


    谢谢Ganesh,我不知道我是怎么错过那篇文章的。谢谢Ganesh,我不知道我是怎么错过那篇文章的。谢谢Choo,我吃了晚饭后也明白了,但这肯定会有帮助。谢谢你把它记录得如此清晰:)谢谢Choo,我吃过晚饭后也明白了很多,但这肯定会有所帮助。感谢您如此清晰地记录它:)