Bueno, extrañe bloggear :) ya solo me queda un examen pero esta facil asi que vuelvo a postear.

Aprendi varias cosas ultimamente con KumbiaPHP y en parte gracias a la buena onda de los desarrolladores que siempre estan dispuestos a ayudar.

Hoy quiero compartir con Ustedes un metodo sencillo para tener varias vistas para una misma accion en kumbiaPHP.

De que nos sirve esto? Pues esto es una de las ventajas del modelo MVC y nos sirve para muchas cosas. Por ej: Si yo hago una aplicacion web y quiero que tambien pueda ser accedida desde los celulares no es necesario programar toda la aplicacion de nuevo, sino simplemente cambiar la vista pero que el controlador siga siendo el mismo.

Vamos a lo practico.

Supongamos que tenemos un controlador llamado ejemplo_controller.php y el cual tiene una accion index y esa accion queremos que tenga 2 vistas. El controlador tendra el siguiente codigo: [php]nombre=“Fede”; if ($var==“wap”){ $this->render(“index2”,“default”); } }

} ?>[/php]


Lo que tenemos que tener en cuenta es que la accion recibe una variable que yo le llame $var y si esa variable tiene el valor “wap” (wap es solo un ejemplo, pueden usar lo que quieran) entonces carga y usa la vista llamada “index2”.

Veamos ahora las vistas:

ejemplo/index.phtml (o sea la vista default para la accion index) tiene el siguiente codigo:

# Hola 




  
Mas texto de ejemplo para la vista.

Y la vista ejemplo/index2.phtml tiene el siguiente codigo:

Chau 

Como veran son vistas que muestran cosas diferentes pero trabajan con la misma variable de la misma accion.

Para ver el ejemplo carguen su accion primero asi:

http://ruta_de_la_aplicacion/controlador/accion

como yo estoy probando en un servidor local seria asi:

http://localhost/aplicacion/ejemplo/index

Con eso veran como se carga la primer vista. Y ahora si ponen asi:

http://ruta_de_la_aplicacion/controlador/accion/variable

veran la segunda vista, en mi caso seria asi:

http://localhost/aplicacion/ejemplo/index/wap

En realidad esta sencillo no?

Pero que pasa si queremos hacer que todas las vistas de un sitio o aplicacion tenga varias vistas? Estar pidiendo variables en cada accion es un poco engorroso pero les tengo una solucion.

Primero que nada deberemos cargar la clase session en el boot.ini de nuestra aplicacion, este archivo se encuentra en la carpeta config, casi siempre viene cargado la clase logger, es solo cuestion de agregar separada por coma la clase session, nos quedaria asi:

[modules] libs = logger, session

Ahora vamos a modificar nuestro accion index, para que quede asi:

function index($var=null){ if ($var=="wap"){ Session::set("wap", "wap"); }}

Como veran sigue recibiendo por parametro una variable, la diferencia ahora esta en que esta sera la unica accion que reciba una variable, las otras acciones podran hacer uso de la variable de session que acabamos de crear. De ahora en mas cualquier otra accion de nuestra aplicacion podra saber si cargar una vista u otra dependiendo del valor de esa variable de session, con este simple codigo:

if (Session::get("wap")=="wap"){$this->render("otraaccion");}

Este codigo debera ser agregado en cada accion que deseemos que tenga una o mas vistas alternativas, en este caso yo lo hice solo con 2 vistas pero puede ocurrir que alguien necesite tener mas de 2 vistas para una misma accion.

Esta manera, usando variables de session, creo que es la mas comoda ya que solo necesitamos pasar una variable por URL a la primer accion.

Bueno asi com me sirvio a mi espero que les sirva a Ustedes. Cualquier cosa me preguntan o se conectan al IRC de KumbiaPHP y ahi seguro que los ayudan.