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?

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top