【问题标题】:Extending the Template Controller in Kohana在 Kohana 中扩展模板控制器
【发布时间】:2010-11-21 12:24:21
【问题描述】:

在尝试为我的项目追溯创建新的基本控制器时,我有点困惑。如果我没记错的话,我需要做的就是在 application/libraries 中创建一个名为 MY_baseController.php 的文件,其中包含以下内容:

class baseController extends Template_Controller
{
  public function __construct()
  {
    parent::__construct();
  }
}

然后重写我的其他控制器以扩展baseController 而不是Template_Controller

class Frontpage_Controller extends Template_Controller

class Frontpage_Controller extends baseController

然而,当我这样做时,访问 Frontpage_Controller 会提醒我:

找不到类“baseController”...

我在这里错过了什么?

【问题讨论】:

    标签: php kohana base-class extending


    【解决方案1】:

    经过一番摆弄,我认为以下是我的解决方案......

    MY_baseController.phpapplication/libraries 移动到application/controllers。将其重命名为 base.php 并更改以下行:

    class baseController extends Template_Controller
    

    进入

    class Base_Controller extends Template_Controller
    

    现在在您的 Frontpage 控制器中,扩展 Base_Controller 而不是 baseController

    【讨论】:

    • 考虑将其抽象化,“抽象类 Base_Controller 扩展 Template_Controller”。这可以防止意外尝试通过example.com/myapp/base 渲染它。
    【解决方案2】:

    确保您遵循 Kohana 约定以确保所有内容都能正确自动加载!模型助手和库也有类似的。

    此外,如果您想保持主应用程序控制器文件夹干净,我建议您为您的应用程序制作一个 Kohana 模块,并将所有模板和其他扩展控制器放在那里,以使它们与主控制器分开。

    别忘了将模块添加到您的配置文件中!

    【讨论】:

      【解决方案3】:

      我知道这是一个老问题,但我想我会说一句话。您只需要从文件名中删除 MY_ 前缀,因为只有在系统文件夹中扩展以 _Core 为后缀的类时才真正需要它。例如,文件为

      class Controller extends Controller_Core
      

      将命名为 MY_Controller.php。

      在这种情况下,只需将文件命名为 baseController.php 并将其放入库文件夹即可。

      【讨论】:

        【解决方案4】:

        无意冒犯,但我不得不把头撞到我的电脑上才能让它与 Kohana 3.1 一起工作。我终于想通扩展模板控制器的语法应该是:

        class Controller_Base extends Controller_Template
        

        【讨论】:

          猜你喜欢
          • 2011-07-11
          • 2018-12-16
          • 1970-01-01
          • 2023-03-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-20
          • 2014-10-15
          相关资源
          最近更新 更多