2009-08-20 9 views
0

Ich habe ein bisschen Verwirrung bei dem Versuch, einen neuen Basis-Controller für mein Projekt zu erstellen. Wenn mich nicht alles täuscht, alles, was ich tun müssen, ist eine Datei in application/libraries erstellen genannt MY_baseController.php mit folgendem Inhalt:Erweitern des Vorlagen-Controllers in Kohana

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

Und dann meine anderen Controllern umschreiben baseController zu erweitern statt Template_Controller:

class Frontpage_Controller extends Template_Controller 

zu

class Frontpage_Controller extends baseController 

Doch wenn ich das tue, den Zugriff auf die Frontpage_Controller Warnungen mir, dass:

Class 'Base' nicht gefunden ...

Was bin ich hier?

Antwort

2

Nach einiger Fummelei, ich glaube, die im Anschluss an meine Lösung ist ...

Verschieben MY_baseController.php von application/libraries und in application/controllers. Benennen Sie es zu base.php und ändern Sie die folgende Zeile ein:

class baseController extends Template_Controller 

in

class Base_Controller extends Template_Controller 

Jetzt in Ihrem Frontpage-Controller erweitern Base_Controller statt baseController.

+1

Betrachten Sie es als abstrakt als auch machen „abstrakte Klasse Base_Controller erstreckt Template_Controller“. Dies verhindert einen versehentlichen Versuch, es über http://example.com/myapp/base zu rendern. – Chadwick

0

Vergewissern Sie sich, dass Sie Kohana Conventions befolgen, um sicherzustellen, dass alles automatisch geladen wird! Es gibt ähnliche in Bezug auf Modellhelfer und Bibliotheken.

Auch wenn Sie Ihren Hauptordner für Anwendungscontroller sauber halten möchten, würde ich vorschlagen, ein Kohana-Modul nur für Ihre Anwendung zu erstellen und alle Vorlagen- und misc-Erweiterungscontroller dort getrennt von Ihren Hauptcontrollern zu platzieren.

Vergessen Sie nicht, das Modul zu Ihrer Konfigurationsdatei hinzuzufügen!

0

Ich weiß, das ist eine alte Frage, aber ich dachte, ich würde ein Wort einlegen. Sie müssen nur das Präfix MY_ aus dem Dateinamen entfernen, da Sie es nur wirklich brauchen, wenn Sie eine Klasse mit dem Zusatz _Core im Systemordner erweitern. Die Datei für

class Controller extends Controller_Core 

würde beispielsweise MY_Controller.php benannt werden.

In diesem Fall würde nur die Datei baseController.php benennen und in den Bibliotheksordner einfügen.

0

Nichts für ungut, aber ich musste meinen Kopf auf meinen Computer knallen, um es mit Kohana 3.1 arbeiten zu lassen. Ich endlich herausgefunden, dass die Syntax Template Controller zu erweitern sein sollte:

class Controller_Base extends Controller_Template