tengo que modifica una aplicación en php realizada con otro programador, que por lo que me comento el dueño de la pagina se baso en este tutorial:
http://www.jourmoly.com.ar/introducc...segunda-parte/
El siguiente código es la clase para el manejo de vistas:
Código PHP:
Ver original
< ?php class View { function __construct() { } { //$name es el nombre de nuestra plantilla, por ej, listado.php //$vars es el contenedor de nuestras variables, es un arreglo del tipo llave => valor, opcional. //Traemos una instancia de nuestra clase de configuracion. $config = Config::singleton(); //Armamos la ruta a la plantilla $path = $config->get('viewsFolder') . $name; //Si no existe el fichero en cuestion, tiramos un 404 { return false; } //Si hay variables para asignar, las pasamos una a una. { foreach ($vars as $key => $value) { $$key = $value; } } //Finalmente, incluimos la plantilla. include($path); } } /* El uso es bastante sencillo: $vista = new View(); $vista->show('listado.php', array("nombre" => "Juan")); */ ?>
el controlador es:
Código PHP:
Ver original
class configuracionController extends Controller { public function index() { $this->Utilidades->validar($this->Session->get('admin')); $configuración = new ConfiguracionSitio(); $datos=$this->validarDatos($configuración->listarConfiguracion()); if(!$datos) { $data['datos'] = $this->validarDatos($configuración->listarConfiguracion()); } else { $data['datos'] = $datos; } $data['breadCrumb']=$this->BreadCrumb->listarBreadCrumb($_REQUEST); if($this->Session->get('mensaje')) { $data['mensaje'] = $this->Session->get('mensaje'); $this->Session->del('mensaje'); } $this->Vistas->show('index.html',$data); } public function editar() { $configuración = new ConfiguracionSitio(); $this->Utilidades->validar($this->Session->get('admin')); $data['datos'] = $this->validarDatos($configuración->listarConfiguracion()); $data['breadCrumb']=$this->BreadCrumb->listarBreadCrumb($_REQUEST); $this->Vistas->show('editar.html',$data); } public function guardar() { $this->Utilidades->validar($this->Session->get('admin')); $data['breadCrumb']=$this->BreadCrumb->listarBreadCrumb($_REQUEST); $configuración = new ConfiguracionSitio(); $datos = $this->validarFormulario($_REQUEST); $resultado=$configuración->guardarConfiguracion($datos); if($resultado==true) { $this->Mensajes->agregarMensaje(1,'La configuración se guardo correctamente','ok'); $this->Session->set('mensaje',$this->Mensajes->mostrarMensaje()); //$this->Vistas->show('index.html',$data); $this->Utilidades->redirect('index.php?controlador=configuracion'); } else { $this->Mensajes->agregarMensaje(1,'La configuración no se puedo guardar correctamente','error'); $this->Mensajes->agregarMensaje(1,$resultado,'error'); $data['mensaje'] = $this->Mensajes->mostrarMensaje(); $data['datos'] = $this->Utilidades->arrayObjeto($_REQUEST); $this->Vistas->show('editar.html',$data); } }
y una vista la crea asi, por ejemplo index.html del controlador configuracion:
Código HTML:
Ver original
<?php include_once('template/header.html'); echo $breadCrumb; include_once('template/sidebar.html'); ?> <div id="main"> <? if(!empty($mensaje)){ echo $mensaje; } ?> <table cellpadding="0" cellspacing="0" summary=""> <tr> </tr> <tr> </tr> <tr> </tr> <tr> </tr> <tr> </tr> <tr> </tr> <tr> </tr> <tr> </tr> <tr> </tr> <tr> </tr> </table> <br/> </div> <!-- // #main --> <?php include_once('template/footer.html'); ?>
Bien a lo que no le encuentro solución es como poder implementar ajax para que cuando se haga click en una opcion por ejemplo editar configuracion, me salga el famoso gif animado de cargando, y me cargue esa vista por medio de ajax, no se si me conviene usar:
Código Javascript:
Ver original
$('#main').load('controladores/configuracion/template/index.html');
o usar:
Código Javascript:
Ver original
$.ajax({ url: 'index.php?controlador=configuracion&accion=editarConfiguracion', success: function(data) { $('.result').html(data); alert('Load was performed.'); } });
o usar json, me tiene algo perdido este asunto, ya que no encuentro ningun tutorial de ajax con mvc
si me pueden guiar un poco estaré muy agredecido