Estendere il controller Modello nella Kohana
-
19-09-2019 - |
Domanda
Sto avendo un po 'di confusione nel tentativo di creare retroattivamente un nuovo controller di base per il mio progetto. Se non mi sbaglio, tutto quello che devo fare è creare un file in application/libraries
chiamato MY_baseController.php
contenente le seguenti:
class baseController extends Template_Controller
{
public function __construct()
{
parent::__construct();
}
}
E poi riscrivere i miei altri controller di estendere baseController
invece di Template_Controller
:
class Frontpage_Controller extends Template_Controller
a
class Frontpage_Controller extends baseController
Tuttavia, quando faccio questo, l'accesso alla Frontpage_Controller
mi avvisa che:
Class 'BaseController' non trovato ...
Che cosa mi manca qui?
Soluzione
Dopo un po 'giocherellare, penso che il seguente è la mia soluzione ...
Sposta MY_baseController.php
da application/libraries
e in application/controllers
. Rinominarlo in base.php
e cambiare la seguente riga:
class baseController extends Template_Controller
in
class Base_Controller extends Template_Controller
Ora all'interno del vostro controller Frontpage, estendere Base_Controller
invece di baseController
.
Altri suggerimenti
Assicurati di seguire le convenzioni Kohana per assicurarsi che tutto automaticamente carica correttamente! Ci sono altri simili in relazione ai modelli Aiutanti e Biblioteche.
Inoltre, se si desidera mantenere la cartella principale del controller dell'applicazione pulita Vorrei suggerire facendo un modulo Kohana solo per la propria applicazione e mettere tutti i controller di template e di estensione misc lì per tenerli lontano dal controller principale.
Basta non dimenticare di aggiungere il modulo al file di configurazione!
So che questa è una vecchia questione, ma ho pensato di mettere una buona parola. Hai solo bisogno di rimuovere il prefisso MY_ dal nome del file, come è veramente solo bisogno quando si estende una classe suffisso _Core nella cartella di sistema. Ad esempio, il file per
class Controller extends Controller_Core
sarebbe chiamato MY_Controller.php.
In questo caso, basta nominare il file baseController.php e metterlo nella cartella librerie avrebbe funzionato.
Senza offesa, ma ho dovuto battere la testa sul mio computer per farlo funzionare con Kohana 3.1. Ho finalmente capito che la sintassi di estendere controller Template dovrebbe essere:
class Controller_Base extends Controller_Template