Cómo hacer un uso correcto del HMVC de Codeigniter

7

He estado teniendo problemas para ajustar mi cerebro sobre cómo utilizar correctamente la extensión modular para Codeigniter. Por lo que entiendo, los módulos deben ser totalmente independientes entre sí para que pueda trabajar en un módulo y no tener que preocuparme por el módulo en el que está trabajando mi compañero de equipo. Estoy creando un frontend y un backend para mi sitio, y estoy confundido acerca de cómo debo estructurar mis aplicaciones.

La primera parte de mi pregunta es ¿debo usar los controladores raíz de la aplicación para ejecutar módulos, o los usuarios deben ir directamente a los módulos por urls? IE: en mi 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);
}

Mi segunda parte de la pregunta es si debo crear carpetas separadas para el módulo frontal / posterior

-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

Cualquier ayuda sería muy apreciada.

    
pregunta Branden S. Smith 27.08.2012 - 22:57

1 respuesta

3

Solo compartiendo lo que hago.

Dejo que los usuarios accedan directamente al módulo. Tengo controladores separados para el backend y el frontend para el módulo dentro del módulo.

Todos los controladores backend extienden Admin_Controller y el controlador frontend extienden Front_Controller.

La página de administración está representada por el propio módulo (hay una plantilla maestra para el área de administración / área frontal y el módulo llena el área de trabajo principal en la plantilla).

Todas las solicitudes son manejadas por los módulos en sí.

De esta manera, tanto el backend como el frontend son manejados únicamente por el propio módulo.

La estructura de mi carpeta es ligeramente diferente a la tuya:

+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)

Entonces, si necesita eliminar el módulo de contenido, simplemente elimine la carpeta del directorio de módulos. :)

    
respondido por el Broncha 29.08.2012 - 17:03

Lea otras preguntas en las etiquetas