【问题标题】:Yii 1.1: Can I have multiple base controllers?Yii 1.1:我可以有多个基本控制器吗?
【发布时间】:2018-10-26 12:35:25
【问题描述】:

protected/components 中有一个 Controller 类,它以以下注释开头:

/**
 * Controller is the customized base controller class.
 * All controller classes for this application should extend from this base class.
 */
class Controller extends CController {
  ...

我可以定义一个替代的基本控制器吗,比如说Controller2

class Controller2 extends CController {
  ...

并从中派生一些用户控制器?会不会违反 Yii 架构或者引入一些缺陷?

【问题讨论】:

    标签: model-view-controller yii controller yii1.x


    【解决方案1】:

    是的,您可以拥有多个基本控制器。默认模板代表非常基本的应用程序,因此简化了一些概念。在具有多个基本控制器的大型应用程序中非常常见(例如,单独的模块可以有自己的基本控制器),尽管通常您有一些层次结构并且在继承树的顶部有一个基本控制器。

    您可以拥有多个直接扩展 CController 的基本控制器,但引入特定于应用程序的行为可能更难 - 在您的情况下,您需要将相同的代码复制到 ControllerController2 类。因此,通常最好的做法是创建应用级基础控制器,它将作为所有控制器的基础——即使它在开始时是空的,也可以省去在项目后期更改每个控制器的麻烦。

    例如,您可能为后端和前端分离了基本控制器,从而扩展了一个应用级基本控制器:

    class FrontendController extends Controller {
        // frontend-specific adjustments
    }
    
    class BackendController extends Controller {
        // backend-specific adjustments
    }
    
    class Controller extends CController {
        // app-specific adjustments (for backend and frontend)
    }
    

    【讨论】:

    • 基础控制器可以直接从 CController 派生吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    相关资源
    最近更新 更多