Foros del Web » Programando para Internet » PHP »

Duda Controladores MVC

Estas en el tema de Duda Controladores MVC en el foro de PHP en Foros del Web. Buenas, En todos los ejemplos que veo de desarrollo mvc en php los ejemplos son los básicos, http://host/grupos/{id_grupo} y la petición la gestiona GruposController.class.php Pero ...
  #1 (permalink)  
Antiguo 13/12/2010, 07:13
 
Fecha de Ingreso: diciembre-2010
Mensajes: 12
Antigüedad: 13 años, 4 meses
Puntos: 0
Duda Controladores MVC

Buenas,

En todos los ejemplos que veo de desarrollo mvc en php los ejemplos son los básicos,

http://host/grupos/{id_grupo} y la petición la gestiona GruposController.class.php

Pero mi duda es, si tengo una seccion dentro de otra, es decir

http://host/grupos/{id_grupo}/eventos/{id_evento}

que controlador debe gestionar esto?, sabéis de algún documento o ejemplo sobre esto?
  #2 (permalink)  
Antiguo 13/12/2010, 11:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Duda Controladores MVC

digamos que /eventos podría ser una sub-modulo del controlador, algún método, o algo así...

puedes implementarlo como mejor te acomode, siempre y cuando separes también dicho módulo bajo el patrón MVC, y bueno, para eso no existen guías...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/12/2010, 16:10
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Duda Controladores MVC

Cita:
http://host/grupos/{id_grupo}/eventos/{id_evento}
Por qué pasarías primero el id y luego la funcion? Esto funcionaría mucho mejor!

Código PHP:
Ver original
  1. http://host/grupos/eventos/{id_grupo}/{id_evento}

La razón es que las dos primeras variables corresponden a controlador y accion. Es decir, cada controlador tiene muchas acciones. Vos en tu ejemplo solo estabas contemplando que "http://host/grupos/{id_grupo} y la petición la gestiona GruposController.class.php". Pero lo ideal es que primero definas algunas reglas logicas para que funcione bien.

A ver, en limpio (si puedo):
- cada controlador puede tener un metodo index que va a ser el que se ejecute por defecto. Ese puede ejecutarse en caso de que en vez de convocar a otro metodo pases directamente un numero (un parametro numerico).
- cada controlador puede llamar a cualquiera de sus metodos y pasarle dos o mas variables, siempre y cuando la accion se declare en la url.

Te paso un ejemplo de un FrontController que estoy usando yo, y que me funciona para proyectos de pequeña escala (sin usar objetos):

Código PHP:
Ver original
  1.  
  2. include "config.php";
  3. include COMMONS."app/controladores/controlador.php"; // controlador que incluye funciones utiles
  4.  
  5.  
  6. /* Ruteo de variables GET */
  7.  
  8. if ( isset($_GET['route']) )
  9. {                  
  10.     $urlVars = explode('/', preg_replace('/\/$/', "", $_GET['route']));
  11.            
  12.     $controlador  = (isset($urlVars[0])) ? $urlVars[0] : null;
  13.     $accion       = (isset($urlVars[1])) ? $urlVars[1] : null;
  14.     $param1        = (isset($urlVars[2])) ? $urlVars[2] : null;
  15.     $param2        = (isset($urlVars[3])) ? $urlVars[3] : null;
  16.     $param3        = (isset($urlVars[4])) ? $urlVars[4] : null;
  17.        
  18.     if(is_file(NOVEDADES."app/controladores/controlador_".$controlador.".php"))
  19.         require "controladores/controlador_".$controlador.".php";
  20.     else
  21.         require "controladores/controlador_errores.php";
  22.        
  23.     if (function_exists($accion))
  24.             eval($accion($param1, $param2, $param3));
  25.         else
  26.             index();
  27. }  
  28.    
  29. else
  30. {
  31.      require "controladores/controlador_articulos.php"; // controlador default
  32.                index(); // funcion default
  33. }

Etiquetas: controladores, mvc
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:57.