Foros del Web » Programando para Internet » PHP »

Problema con Plantilla MVC

Estas en el tema de Problema con Plantilla MVC en el foro de PHP en Foros del Web. Hola chicos.... bueno esta vez tengo un pequeño problema que no he podido resolver ... el caso es que estoy tratando de terminar este pequeño ...
  #1 (permalink)  
Antiguo 25/07/2013, 15:31
Avatar de Deathmetalrules  
Fecha de Ingreso: diciembre-2010
Ubicación: Mas - aya
Mensajes: 65
Antigüedad: 13 años, 4 meses
Puntos: 8
Información Problema con Plantilla MVC

Hola chicos.... bueno esta vez tengo un pequeño problema que no he podido resolver ... el caso es que estoy tratando de terminar este pequeño proyecto al cual adapte una funcion para poder integrar una vista dentro de la plantilla principal pero el caso es que no me funciona y la verdad no se que hacer

clase para la vista

Código PHP:
<?php 
class View {


    private 
$menu;
    private 
$rutaview,$rutafooter;
    private 
$defaultem;
    private 
$indexs;
    private 
$main;
    private 
$layout;
    private 
$path,$pathimg,$jscript,$contenido;
    private 
$vars=array(),$vistaW=array();
public function 
__construct(){
    
$this->defaultem="default"
      
    }
public function 
set($name,$value) {
   
$this->vars[$name] = $value;
    }    
public function 
show($view,$noLayout false)
    {
    
$this->rutaviewROOT."templates".DS.$this->defaultem.DS.'index'.".php";
    
    
$this->rutafooter=$this->load(ROOT."templates".DS.$this->defaultem.DS."footer".".php");
    
    
$this->menu=$this->load(ROOT."templates".DS.$this->defaultem.DS.'menu'.".php");
        
    
$this->path=BASE_URL.DS.'templates'.DS$this->defaultem DS.'css';
        
    
$this->pathimg=BASE_URL.DS.'templates'.DS.$this->defaultem DS.'img';
    
    
$this->jscript=BASE_URL.DS.'js';
    
    foreach(
$this->vars as $key => $value) {
    $
$key $value;
    }
    
$this->vistaW["vistas"]=ROOT.'vista' DS $view'.php';
    
    if(
is_readable($this->vistaW["vistas"]))
    {
    
$this->set('contenido',$this->vistaW["vistas"]); 
    }
    else {
            throw new 
Exception('View issues');
        }
    
    
$this->loadview($this->rutaview);
}    
public function 
load($var){
    
    if (
file_exists($var)){
    
    
ob_start();

    require_once 
$var;

    
$output ob_get_contents();

    
ob_end_clean();

    return 
$output;

    }
    else {
    
    return 
'Template no encontrado';
    }
    
}    
public function 
loadview($views)
{
include_once(
$views);    
}
}
?>
El template si carga pero al momento de enviar la vista no lo hace

controlador
Código PHP:
<?php
class controlador extends controladores {
    var 
$consulta,$paginacion,$pag,$rutas,$data,$mensaje;
public function 
__construct() {
        
parent::__construct();
        
$this->loadmodel("modelo");
        
$this->consulta =new auth;
        
$this->loadlibrary("paginador");
        
$this->pag = new Paginador();
        
$this->login();
        
        
}    
public function 
principal(){


          
$this->data=$this->consulta->users();    
        
$pg=$this->pag->paginas($this->data,$page,$limites);    
                        
        
$datas=$pg;    
    
        
$this->view->set("datas",$datas);
        
$this->view->show("centro".DS."tabla");
        exit;
        
        }

        
                
}
?>
constructor principal

Código PHP:
<?php abstract class controladores {
    
public function 
__construct(){
    
$this->view=new View();

}
?>

agradeceria su ayuda !! gracias de antemano
__________________
Un nuevo horizonte
  #2 (permalink)  
Antiguo 25/07/2013, 16:12
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Problema con Plantilla MVC

La función load() devuelve el resultado de la carga de la vista, pero no haces nada con ello.

Y,completamente offtopic, y no criticando tu código, porque al fin y al cabo tu código es lo que se llama "MVC", la siguiente secuencia:
Código PHP:
Ver original
  1. $this->loadmodel("modelo");
  2.         $this->consulta =new auth;
  3.         $this->loadlibrary("paginador");
  4.         $this->pag = new Paginador();
  5.         $this->login();
es la nueva forma de mezclar código de presentación y lógica de negocio, lo cual es un problema más complejo que simplemente "no mezclar html y sql".
  #3 (permalink)  
Antiguo 25/07/2013, 16:35
Avatar de Deathmetalrules  
Fecha de Ingreso: diciembre-2010
Ubicación: Mas - aya
Mensajes: 65
Antigüedad: 13 años, 4 meses
Puntos: 8
Respuesta: Problema con Plantilla MVC

gracias por tu respuesta.... bueno la verdad es que no tengo tanta experiencia en MVC pero segun lo que he leido si representa grandes retos por la estructuracion del codigo etc... etc

en cuanto a la funcion load ... la he estado utilizando para cargar el footer y el menu ..

lo que necesito basicamente es que la variable "contenido" sea reemplazada por la vista...
esta es mi layout principal...
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="shortcut icon" href="<?php echo $this->pathimg?>/favicon.ico" />
<meta charset="utf-8">
<link href="<?php echo $this->path?>/template.css" rel="stylesheet" type="text/css">
<script language="javascript" src="<?php echo $this->jscript?>/jquery.js"></script>
<script type="text/javascript" src="<?php echo $this->jscript?>/centro.js"></script>
<title><?php if(isset($title)) echo $title?></title>
</head>
<body id="containerbody">

<div class="container">
  <div class="header"></div>
   <div class="menu"><?php if(isset($this->menu)) echo $this->menu?></div>
     <br class="clearfloat" />
     <div id="message"><?php if(isset($mensaje)) echo $mensaje?></div>
            <div class="content"><?php if(isset($contenido)) echo $contenido?></div>
     <div id="divReportes"></div> 
  <div class="footer"><?php if(isset($this->rutafooter)) echo $this->rutafooter?></div>
</div>
</body>
</html>

en este punto es en el que me encuentro estancado ... ya que si solamente hago un include de la vista ... el lo hace pero fuera del layout ...
__________________
Un nuevo horizonte

Etiquetas: mvc, plantilla, tabla
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 16:53.