Ver Mensaje Individual
  #13 (permalink)  
Antiguo 16/02/2012, 03:53
chemajmb
 
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 150
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: MVC:¿ Como cargar las plantillas ?

Gracias por la respuesta,

A ver, asi pensando, si lo hago asi como tu dices, ¿ mas especificamente como se haria ? Es decir, puesto que no le pasas parametros con los datos de por ejemplo la barra izquierda, leftsidebar(), lo que haria seria tener un metodo para cargar los datos en una variable global de la clase view/template o como quieras que se llame, y entonces en leftsidebar(), en el codigo de este metodo, poner que siempre coja y cargue los datos de esa variable global en la plantilla de la columna izquierda, osea que devuelva un flujo de salida con los datos de la variable esta global ya puestos con la plantilla y todo para la columna izquierda.
Perdona si me he liado al explicarlo, espero que me entiendas.


Yo venia haciendolo de otra manera hasta que vi un manual bastante decente de MVC y decidi enfocar el controlador de otra manera, y no se si tambien hare lo mismo con la vista. Yo lo que hacia era:
Código PHP:
<div id="header"></div>
<
div id="container">
* * * <
div id="left">{leftsidebar}</div>
* * * <
div id="main">{content}</div>
* * * <
div id="right">{rightsidebar}</div>
</
div
y luego
Código PHP:
abstract class clase_vista {

    private 
$nombre;
    private 
$html;
    
    public function 
__construct(){
        
//$this -> html = $this->dame_plantilla( NOMBRE_PLANTILLA_BASE );
    
}

    private function 
dame_plantilla$nombre_plantilla ) {
        
$file $_SERVER['DOCUMENT_ROOT'].URL_HTML.$nombre_plantilla.'.htm';
        
$plantilla file_get_contents($file);
        return 
$plantilla;
    }

    protected function 
carga_plantilla_principal$nombre_plantilla ) {
        
$this->html $this->dame_plantilla$nombre_plantilla );
    }

    protected function 
coloca_plantilla$nombre_plantilla$localizacion_html ) {
        if ( 
$nombre_plantilla && $localizacion_html ){
            
$plantilla $this->dame_plantilla$nombre_plantilla );
            
$this->html str_replace('{'.$localizacion_html.'}'$plantilla$this->html);
        }
    }
    
    protected function 
coloca_dato$datos$localizacion_html ) {
        if ( 
$datos ){
            
$this->html str_replace('{'.$localizacion_html.'}'$datos$this->html);
        }
    }

    protected function 
coloca_datos$datos) {
        if ( 
$datos )
            foreach ( 
$datos as $clave => $valor )
             
$this->html str_replace('{'.$clave.'}'$valor$this->html);
    }

    protected function 
imprime_plantilla() {
        print (
$this->html);
    }
    abstract public function 
dame_vista();

¿ No quedan mas limpias las plantillas de esta forma siendo estas ficheros html ?, parece una manera un poco mas elegante de hacerlo. Aunque no se.

Última edición por chemajmb; 16/02/2012 a las 04:13