2009-08-20 100 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