Varias Vistas para la misma accion en KumbiaPHP

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
class EjemploController extends ApplicationController {

function index($var=null){
 $this-&gt;nombre="Fede";
 if ($var=="wap"){
 $this-&gt;render("index2","default");
 }
}

}
?>

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:

<h1>Hola <?= $nombre?></h1>
<br/>
Mas texto de ejemplo para la vista.

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

Chau <?= $nombre?>

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.

perro

Ingeniero en Informática. Programador en PHP y Angular. Lo que mas adoro en el mundo es el conocimiento. Y el anime....y Japón...y el running...y bloguear claro y algunas otras cientos de cosas. Sigo buscando la manera de hacer mi primer millón.
guest
9 Comments
Inline Feedbacks
View all comments
Deivinson Tejeda

perro este me parece muy bien lo he utilizado y me gusta mucho soporte a varios lenguaje…

http://wordpress.org/extend/plugins/wp-syntax/

KumbiaPHP Framework

Hola Perro,
aun es más fácil usando el set_response.
$this->set_response(‘wap’);

con eso busca en views/controller/wap/accion.phtml
puedes usarlo para rss, wap, xml, ….
Y de esta manera queda organizado en carpetas tus views.
Saludos

Deivinson Tejeda

Perro cuando kieras pasate por el IRC de KumbiaPHP y te diré como se utiliza ;-)

KumbiaPHP Framework

Se ha documentado esta sección en la Wiki de KumbiaPHP le agregaremos la nueva implementación del set_response

Onizukar

Hola
que buen blog tiene, n habia visto antes blogs con tutoriales sobre kumbiaphp. yo hace poco me puse a la tarea de tener mi blog y poner ahi tutoriales sobre kumbiaphp.

En cuanto a el plugin del codigo, le recomiedno el http://wordpress.org/extend/plugins/wp-codebox/

Es bastante util y comodo, si algo lo puede ver en mi blog instalado
Saludos :up:

Onizukar

Ok, la semana que viene escribire un par de cosas, estos dias no hago casi nada por cuestiones de salud :mrgreen:
pero ya vuelve todo a la normalidad, espero poder hacer un par de tutoriales interesantes

Saludos! :up: