Come utilizzare correttamente Codeigniter HMVC

7

Ho avuto problemi a capire come utilizzare correttamente la estensione modulare per Codeigniter. Da quello che ho capito, i moduli dovrebbero essere completamente indipendenti l'uno dall'altro così posso lavorare su un modulo e non dovermi preoccupare di quale modulo il mio compagno di squadra stia lavorando. Sto costruendo un frontend e un backend per il mio sito e sto avendo confusione su come dovrei strutturare le mie applicazioni.

La prima parte della mia domanda è se dovessi usare i controller di root dell'app per eseguire i moduli, o gli utenti dovrebbero andare direttamente ai moduli da url? IE: nel mio welcome.php

public function index()
{
  $this->data['blog'] = Modules::run( 'blog' );
  $this->data['main'] = Modules::run( 'random_image' );
  $this->load->view('v_template', $this->data);
}

public function calendar()
{
  $this->data['blog'] = Modules::run( 'blog' );
  $this->data['main'] = Modules::run( 'calendar' );
  $this->load->view('v_template', $this->data);
}

La mia seconda parte della domanda dovrebbe essere la creazione di cartelle separate del modulo front / back end

-config
-controllers
  welcome.php
  -admin
    admin.php
-core
-helpers
-hooks
-language
-libraries
-models
-modules-back
  -dashboard
  -logged_in
  -login
  -register
  -upload_images
  -delete_images
-modules-front
  -blog
  -calendar
  -random_image
  -search
-views
  v_template.php
  -admin
    av_template.php

Qualsiasi aiuto sarebbe molto apprezzato.

    
posta Branden S. Smith 27.08.2012 - 22:57
fonte

1 risposta

3

Condivide solo quello che faccio.

Lascio che gli utenti accedano direttamente al modulo. Ho controller separati per backend e frontend per il modulo all'interno del modulo.

Tutti i controller di backend estendono Admin_Controller e il controller di frontend estendono Front_Controller.

La pagina di amministrazione viene visualizzata dal modulo stesso (esiste un modello principale per l'area di amministrazione / area frontale e il modulo riempie l'area di lavoro principale nel modello).

Tutte le richieste sono gestite dai moduli stessi.

In questo modo sia il backend che il frontend sono gestiti esclusivamente dal modulo stesso.

La struttura della mia cartella è leggermente diversa dalla tua:

+application
|--+modules
   |--+content
      |--+controllers
      |  |--+admin
      |     |--Content_Controller.php (This handles the backend requests)
      |  |--Content_Controller.php (This handles the frontend requests)
      |--models
      |--+views
      |  |--+admin (this contains the views for backend)
      |  |--+front (this contains views for front end)

Quindi, se è necessario rimuovere il modulo del contenuto, rimuovere la cartella dalla directory dei moduli. :)

    
risposta data 29.08.2012 - 17:03
fonte

Leggi altre domande sui tag