扩展Kohana中的模板控制器

时间:2009-08-20 23:24:17

标签: php kohana base-class extending

我试图为我的项目追溯创建一个新的基本控制器时遇到了一些困惑。如果我没有弄错的话,我需要做的就是在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'

我在这里缺少什么?

4 个答案:

答案 0 :(得分:2)

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

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

class baseController extends Template_Controller

进入

class Base_Controller extends Template_Controller

现在在FrontPage控制器中,扩展Base_Controller而不是baseController

答案 1 :(得分:0)

确保遵循Kohana惯例以确保所有内容都能正确自动加载!与模型助手和图书馆有关的类似。

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

不要忘记将模块添加到配置文件中!

答案 2 :(得分:0)

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

的文件
class Controller extends Controller_Core

将命名为MY_Controller.php。

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

答案 3 :(得分:0)

没有冒犯,但我不得不在计算机上敲击它以使其与Kohana 3.1一起工作。我终于想出扩展模板控制器的语法应该是:

class Controller_Base extends Controller_Template