2009-08-20 69 views
0

我试图追溯性地为我的项目创建一个新的基础控制器时有点混乱。如果我没有记错的话,我需要做的就是在application/libraries创建一个名为MY_baseController.php包含以下内容:在Kohana中扩展模板控制器

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

然后重写我的其他控制器,而不是延长baseControllerTemplate_Controller

class Frontpage_Controller extends Template_Controller 

class Frontpage_Controller extends baseController 

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

类 'baseController' 未找到...

缺少什么我在这里?

回答

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

考虑使它也是抽象的,“抽象类Base_Controller扩展了Template_Controller”。这可以防止意外尝试通过http://example.com/myapp/base呈现它。 – Chadwick 2010-04-05 21:31:19

0

确保您遵循Kohana惯例,以确保一切正常自动加载!模型帮助者和图书馆也有类似的情况。

此外,如果你想保持你的主应用程序控制器文件夹清洁,我会建议制作一个Kohana模块只是为了你的应用程序,并把所有的模板和其他扩展控制器,让他们与你的主控制器分开。

只是不要忘记将模块添加到您的配置文件!

0

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

class Controller extends Controller_Core 

将被命名为MY_Controller.php。

在这种情况下,刚刚命名的文件baseController.php并把它在库中的文件夹会工作。

0

无意冒犯,但我不得不一声我的电脑上我的头,把它与Kohana的3.1工作。我终于明白扩展模板控制器的语法应该是:

class Controller_Base extends Controller_Template