Foros del Web » Programando para Internet » PHP »

Renderizar vista con MVC (no POO)

Estas en el tema de Renderizar vista con MVC (no POO) en el foro de PHP en Foros del Web. Estoy usando MVC no orientado a objetos. Y quiero resolver el tema de imprimir los contenidos en pantalla. Por lo que entiendo, las vistas son ...
  #1 (permalink)  
Antiguo 21/10/2010, 14:11
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Pregunta Renderizar vista con MVC (no POO)

Estoy usando MVC no orientado a objetos. Y quiero resolver el tema de imprimir los contenidos en pantalla. Por lo que entiendo, las vistas son estructuras html. Algunas son layouts, otras son fragmentos de html. En fin, lo que necesito hacer es reunir esos fragmentos (los contenidos) con el layout.

Me hice una función setLayout($layout), que almacena en una constante o en una variable de session el nombre de la plantilla.

Por otro lado, tengo la plantilla, que en el body tiene una variable $contenidos...

Ahora, estoy usando buffers para preparar los contenidos. Y quisiera soltarlos dentro de la plantilla. El problema es que no se como hacer eso con funciones. Me funciona OK en PHP no encapsulado, pero si quiero encapsular esto en funciones, como hago? Habia pensado en algo así:

setLayout($layout);
setContent($params);
render();

Pero como se entera render() de los contenidos? Estaría mal pasar esos contenidos como variable?
  #2 (permalink)  
Antiguo 21/10/2010, 16:25
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: Renderizar vista con MVC (no POO)

Finalmente lo estoy haciendo con el paso de una variable $contenidos, que es la que contiene la vista seleccionada.

VISTA
Código PHP:
Ver original
  1. /* plantillas */
  2. function elegir_plantilla( $plantilla ){
  3.        
  4.         $plantilla = $plantilla.".php";
  5.        
  6.         if ( !file_exists( PLANTILLAS.$plantilla ) )
  7.             return false;
  8.        
  9.         define('LAYOUT', $plantilla);  
  10.         return true;   
  11. }  
  12.  
  13. function definir_contenidos( $vista ){
  14.        
  15.         ob_start();
  16.         include VISTAS."$vista.php";
  17.         $contenidos = ob_get_contents();
  18.         ob_end_clean();
  19.  
  20.         return $contenidos;
  21. }
  22.  
  23. function mostrar($contenidos){
  24.    
  25.     /* El hook de la plantilla se llama $contenidos */ 
  26.     include PLANTILLAS.LAYOUT;
  27. }

CONTROLADOR
Código PHP:
Ver original
  1. function ver(){
  2.  
  3.     elegir_plantilla("index");
  4.     $contenidos = definir_contenidos("albums");
  5.     mostrar($contenidos);
  6.  
  7. }

Etiquetas: mvc, poo, renderizar, vistas
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 10:11.