Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/03/2010, 14:05
Avatar de destor77
destor77
 
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años, 1 mes
Puntos: 43
cargar vistas en MVC con ajax

Hola,
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
  1. < ?php
  2. class View
  3. {
  4.     function __construct()
  5.     {
  6.     }
  7.  
  8.     public function show($name, $vars = array())
  9.     {
  10.         //$name es el nombre de nuestra plantilla, por ej, listado.php
  11.         //$vars es el contenedor de nuestras variables, es un arreglo del tipo llave => valor, opcional.
  12.  
  13.         //Traemos una instancia de nuestra clase de configuracion.
  14.         $config = Config::singleton();
  15.  
  16.         //Armamos la ruta a la plantilla
  17.         $path = $config->get('viewsFolder') . $name;
  18.  
  19.         //Si no existe el fichero en cuestion, tiramos un 404
  20.         if (file_exists($path) == false)
  21.         {
  22.             trigger_error ('Template `' . $path . '` does not exist.', E_USER_NOTICE);
  23.             return false;
  24.         }
  25.  
  26.         //Si hay variables para asignar, las pasamos una a una.
  27.         if(is_array($vars))
  28.         {
  29.                     foreach ($vars as $key => $value)
  30.                     {
  31.                     $$key = $value;
  32.                     }
  33.                 }
  34.  
  35.         //Finalmente, incluimos la plantilla.
  36.         include($path);
  37.     }
  38. }
  39. /*
  40.  El uso es bastante sencillo:
  41.  $vista = new View();
  42.  $vista->show('listado.php', array("nombre" => "Juan"));
  43. */
  44. ?>

el controlador es:
Código PHP:
Ver original
  1. class configuracionController extends Controller {
  2.  
  3.  
  4.     public function index() {
  5.         $this->Utilidades->validar($this->Session->get('admin'));
  6.         $configuración = new ConfiguracionSitio();
  7.         $datos=$this->validarDatos($configuración->listarConfiguracion());
  8.  
  9.         if(!$datos) {
  10.             $data['datos'] = $this->validarDatos($configuración->listarConfiguracion());
  11.         }
  12.         else {
  13.             $data['datos'] = $datos;
  14.         }
  15.         $data['breadCrumb']=$this->BreadCrumb->listarBreadCrumb($_REQUEST);
  16.         if($this->Session->get('mensaje')) {
  17.             $data['mensaje'] = $this->Session->get('mensaje');
  18.             $this->Session->del('mensaje');
  19.         }
  20.         $this->Vistas->show('index.html',$data);
  21.     }
  22.  
  23.  
  24.     public function editar() {
  25.         $configuración = new ConfiguracionSitio();
  26.         $this->Utilidades->validar($this->Session->get('admin'));
  27.         $data['datos'] = $this->validarDatos($configuración->listarConfiguracion());
  28.         $data['breadCrumb']=$this->BreadCrumb->listarBreadCrumb($_REQUEST);
  29.         $this->Vistas->show('editar.html',$data);
  30.     }
  31.  
  32.  
  33.     public function guardar() {
  34.         $this->Utilidades->validar($this->Session->get('admin'));
  35.         $data['breadCrumb']=$this->BreadCrumb->listarBreadCrumb($_REQUEST);
  36.         $configuración = new ConfiguracionSitio();
  37.         $datos = $this->validarFormulario($_REQUEST);
  38.         $resultado=$configuración->guardarConfiguracion($datos);
  39.         if($resultado==true) {
  40.             $this->Mensajes->agregarMensaje(1,'La configuración se guardo correctamente','ok');
  41.             $this->Session->set('mensaje',$this->Mensajes->mostrarMensaje());
  42.  
  43.             //$this->Vistas->show('index.html',$data);
  44.             $this->Utilidades->redirect('index.php?controlador=configuracion');
  45.         }
  46.         else {
  47.             $this->Mensajes->agregarMensaje(1,'La configuración no se puedo guardar correctamente','error');
  48.             $this->Mensajes->agregarMensaje(1,$resultado,'error');
  49.             $data['mensaje'] = $this->Mensajes->mostrarMensaje();
  50.             $data['datos'] = $this->Utilidades->arrayObjeto($_REQUEST);
  51.             $this->Vistas->show('editar.html',$data);
  52.         }
  53.     }

y una vista la crea asi, por ejemplo index.html del controlador configuracion:
Código HTML:
Ver original
  1. <?php
  2. include_once('template/header.html');
  3. echo $breadCrumb;
  4. include_once('template/sidebar.html');
  5.  
  6. ?>
  7.  
  8. <h2><a href="index.php?controlador=configuracion&amp;accion=editar" title="editar">Editar Configuración</a></h2>
  9. <div id="main">
  10.     <?
  11.    if(!empty($mensaje)){
  12.        echo $mensaje;
  13.    }
  14.    ?>
  15.     <h3>Configuración General del Sitio</h3>
  16.     <table cellpadding="0" cellspacing="0" summary="">
  17.         <tr>
  18.             <td>Titulo del Sitio</td>
  19.             <td><? echo $datos['titulo'];?></td>
  20.         </tr>
  21.         <tr>
  22.             <td>Descripción del Sitio</td>
  23.             <td><? echo $datos['descripcion'];?></td>
  24.         </tr>
  25.         <tr>
  26.             <td>Keywords</td>
  27.             <td><? echo $datos['keywords'];?></td>
  28.         </tr>
  29.         <tr>
  30.             <td>Email principal</td>
  31.             <td><? echo $datos['email'];?></td>
  32.         </tr>
  33.         <tr>
  34.             <td>Nombre de usuario email</td>
  35.             <td><? echo $datos['useremail'];?></td>
  36.         </tr>
  37.         <tr>
  38.             <td>Contraseña email</td>
  39.             <td><? echo $datos['passemail'];?></td>
  40.         </tr>
  41.         <tr>
  42.             <td>Puerto del email</td>
  43.             <td><? echo $datos['portemail'];?></td>
  44.         </tr>
  45.         <tr>
  46.             <td>Servidor del email</td>
  47.             <td><? echo $datos['hostemail'];?></td>
  48.         </tr>
  49.         <tr>
  50.             <td>Mensaje Bienvenida del sitio</td>
  51.             <td><? echo $datos['mensaje'];?></td>
  52.         </tr>  
  53.         <tr>
  54.             <td>Contraseña Galerías</td>
  55.             <td><? echo $datos['galerias'];?></td>
  56.         </tr>        
  57.     </table>
  58.     <br/>
  59.  
  60. </div>
  61. <!-- // #main -->              
  62. <div class="clear"></div>
  63. <?php
  64. include_once('template/footer.html');
  65. ?>

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
  1. $('#main').load('controladores/configuracion/template/index.html');

o usar:
Código Javascript:
Ver original
  1. $.ajax({
  2.   url: 'index.php?controlador=configuracion&accion=editarConfiguracion',
  3.   success: function(data) {
  4.     $('.result').html(data);
  5.     alert('Load was performed.');
  6.   }
  7. });

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