Ver Mensaje Individual
  #13 (permalink)  
Antiguo 27/11/2013, 04:50
Avatar de Cuervoo
Cuervoo
 
Fecha de Ingreso: octubre-2013
Mensajes: 165
Antigüedad: 10 años, 7 meses
Puntos: 43
Respuesta: ¿Cómo construir un front-end correctamente?

Ah bien, ahí tenés dos formas. Una es llamar a una clase vista propia del controlador, y otra llamar directamente a la vista. Yo uso esta segunda forma. Creás un array con las variables que va a usar y se las pasás.

Un ejemplo rápido.

Código PHP:
Ver original
  1. <?php
  2.  
  3. //Método del controlador, esto está dentro de la clase
  4. //Va a mostrar una lista de alumnos
  5. function alumnos()
  6. {
  7.     //Este es el array que va a tener todas las variables
  8.     //que la vista necesite
  9.     $datos = array();
  10.  
  11.     //Trae una array con una lista de alumnos
  12.     //
  13.     //El nombre del índice "alumnos" es el nombre
  14.     //de la variable que va a recibir la plantilla
  15.     $datos['alumnos'] = $helper->traemeAlumnos();
  16.  
  17.     //Le pasamos el título que va a tener el H1,
  18.     //solo para que quede más claro
  19.     $datos['titulo'] = 'Lista de alumnos';
  20.  
  21.     //Llama a la vista
  22.     //
  23.     //Dentro del directorio de templates, tenemos el directorio
  24.     //alumnos, que tiene todos los templates
  25.     //de la sección alumnos. Y alumnos_listar.tpl es lo que
  26.     //vamos a mostrar ahora
  27.     View::load('alumnos/alumnos_listar.tpl', $datos);
  28. }
  29.  
  30. //Ahora el método load de la clase View, resumido
  31. static public function load($view, $vars = false)
  32. {
  33.     $tpl = self::path_tpl.'/'.$view;
  34.    
  35.     //Si trae el array con variables las cargamos
  36.     if (is_array($vars))
  37.     {
  38.         foreach ($vars as $k => $v)
  39.         {
  40.             //Esto es del objeto Smarty,
  41.             //Le asigna la variable $k (alumnos, titulo)
  42.             //con el valor $v (el array como los alumnos, y el titulo "Lista de alumnos")
  43.             self::plantilla->assign($k, $v);
  44.         }
  45.     }
  46.  
  47.     //La muestra, también método de la clase smarty
  48.     self::plantilla->display($view);
  49. }

Y ahora la vista, alumnos_listar.tpl, con la sintaxis de smarty

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.     <title>Mi Web</title>
  3. </head>
  4.  
  5.     <h1>{{$titulo}}</h1>
  6.  
  7.     <ul>
  8.     {{foreach $alumnos as $a}}
  9.         <li>{{$a}}</li>
  10.     {{/foreach}}
  11.     </ul>
  12. </body>
  13.  
  14. </html>

Así sería muy por arriba como funciona, a eso andá agregándole todas las necesidades que tengas. Cargale layouts y que en listar_alumnos.tpl solo quede el h1 y el ul, que te retorne el tpl en caso de necesitarlo, algún booleano para tener la opción de no usar plantillas si es que no querés en algún caso específico. De ahí en adelante desarrollá a gusto.

Capaz me falta alguna cosa porque lo puse de la forma más clara posible pero, se entiende.