Home Programación Joomla Usar variables de sesión en Joomla

PostHeaderIcon Usar variables de sesión en Joomla

Usar puntuación: / 0
MaloBueno 

No estaba seguro de hasta qué punto merecía la pena poner un post acerca del uso de las variables de sesión en Joomla. El motivo de mi duda no es otro que la de para qué, si no existe ninguna diferencia en el uso de las variables de sesión en una aplicación php y en un componente Joomla. Al final me animé, porque digo "bah, de perdidos al río". Después, como pasa siempre que uno se tira al río tuve un problema con esto. Así que lo comparto.

La forma de usar una variable de sesión en php sabemos que es

  • $_SESSION["nombre_variable_sesion"]=valor;

Por ejemplo:

  • $_SESSION["pi"]=3,141519;
  • $_SESSION["nombre"]=$nombre;

¿No parece difícil de comprender verdad? La idea de una variable de sesión sabemos que es perpetuarla en la aplicación, que exista más allá de la próxima página que visitemos. Con ella podemos jugar todo lo que queramos y usarla como queramos. Por ejemplo: Si quisiéramos guardar en una variable de sesión el contenido de algún campo de un formulario podríamos hacerlo en el controlador de la siguiente manera:

$_SESSION["nombre_equipo"]=JRequest::getVar('nombre_equipo');

Otro ejemplo podría ser escribirla en el value de un formulario. Esto lo haríamos en el default.php

  • <input type="text" name="equipo" id="equipo" maxlength="100" placeholder="introduzca el equipo" value="<?php echo $_SESSION["nombre_equipo"];?>"/>

Otro ejemplo podría ser para ponerlo en un pdf. En el controlador lo haríamos de la siguiente manera:

  • $pdf->Text(200,44,utf8_decode($_SESSION["nombre_equipo"]));

Un último ejemplo: Tomarla en el modelo para insertarla en la base de datos:

  • $nuevoPrep->nombre_equipo = $_SESSION["nombre_equipo"];

Recuerda que vimos la manera de insertar a través de la función JFactory::getDbo()->insertObject('#__gestorneo_equipos', $nuevoPrep);

La pregunta que se me ocurre es ¿es realmente necesario usar variables de sesión? Normalmente Joomla funciona entre unos y otros, es decir, controlador llama a vista (formulario), controlador toma datos del formulario y los manda a modelo y entre medias nada más. Como mucho alguna otra vista (default_editar por ejemplo) pero como punto final. Así que ¿es necesario?

Pues no lo sé. Yo lo he necesitado y por eso lo pongo. ¿Cuándo? Pues sucedió que tenía que realizar un formulario para la entrada de datos. En el formulario había un campo que según el valor que tuviese tenía que mostrar otro formulario con tantos input text como me dijese el campo (si en ese campo había un 2 pues el nuevo formulario tenía que tener dos input, si ponían 3 tenía que tener 3, etc.) El caso es que al final tenía que insertar en la base de datos los datos de ambos formularios.

Sé lo que estás pensando. "Qué bobería. Hay formas de añadir dinámicamente esas cosas con javascript, con AJAX, con JQuery o con magia negra". Pues la verdad es que sí, pero voy un poco verde en esas cosas y tenía un poco de prisa así que opté por las variables de sesión. Y entonces surgió él...

"Él" es un problema que tuve y que me costó solucionar. La solución apareció justo antes de que empezara a buscar otros lenguajes que aprender para solucionarlo.

El problema es que, al usar variables de sesión al desarrollar para Joomla, me he encontrado con el molesto mensaje que da el depurador de que la sesión ya ha sido empezada

Notice: A session had already been started - ignoring session_start() in ...\components\com_gestorneo\controller.php on line 887

Claro, yo había iniciado sesión con el session_start(), pero juraba y perjuraba en hebreo que una sola vez, en el controlador. Tras jurar y perjurar en hebreo y buscar de mil maneras mi propia memez buscando dónde había iniciado la sesión por segunda vez, encontré la estúpida solución al problema: El core de Joomla inicia las sesiones por sí mismo. Yo hice lo mismo que él y por tanto inicié la sesión por segunda vez. Así de simple. En fin. Cosas que pasan.
Saludos y comenten
 

Comentarios   

 
0 #1 Root 16-03-2017 13:08
Pues a mi me ha servido de ayuda, asi que te agradezco este articulo!

Y gracias por compartir la experiencia, me ha sido muy util en un problema similar que he tenido.

Saludos y gracias.
Citar
 

Escribir un comentario


Código de seguridad
Refescar

PostHeaderIcon Más Comentado

PostHeaderIcon Últimos Comentarios

mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counterHoy1496
mod_vvisit_counterAyer1493
mod_vvisit_counterEsta semana10795
mod_vvisit_counterLa semana pasada10142
mod_vvisit_counterEste mes27353
mod_vvisit_counterEl mes pasado44972
mod_vvisit_counterTodos los días1432923

We have: 153 guests online
Hoy es: Dic 16, 2017