Foros del Web » Programando para Internet » PHP » Zend »

Sesiones en varios Controllers

Estas en el tema de Sesiones en varios Controllers en el foro de Zend en Foros del Web. Ya estoy aquí otra vez con el zend, ahora mi problema son las sesiones y las variables de sesiones. He estado echando un vistazo a ...
  #1 (permalink)  
Antiguo 12/04/2011, 02:50
 
Fecha de Ingreso: marzo-2011
Mensajes: 107
Antigüedad: 13 años, 8 meses
Puntos: 22
Sesiones en varios Controllers

Ya estoy aquí otra vez con el zend, ahora mi problema son las sesiones y las variables de sesiones. He estado echando un vistazo a otros temas en el foro [URL="http://www.forosdelweb.com/f68/consulta-zend-sesiones-522468/"]como en este[/URL] pero aún no he conseguido resolverlo en mi página.
1. Para iniciar la sesión tengo que poner Zend_Session::start(); pero dónde?
- En el Bootstrap?
Código PHP:
protected function _initSession()
    {
        
Zend_Session::start();
    } 
- En el Controller?
Código PHP:
public function Init()
    {
        
Zend_Session::start();
    } 
2. la siguiente línea es la del namespace que es para crear la variable de sesion o para recuperarla, no? La coloco también en el init de todos los controladores en los que voy a usarla?
Código PHP:
public function Init()
    {
        
Zend_Session::start();
        
$idioma = new Zend_Session_Namespace('id_idiomas');
    } 
3. Para dar valor a las variables creo que no tengo problemas(pongo el namespace aqui, pero en realidad solo le coloco en un sitio, o aqui o en el init)
Código PHP:
public function indexAction()    
    { 
       
$idioma = new Zend_Session_Namespace('id_idiomas');

      
      if(isset(
$idioma->id) && !empty($idioma->id))
      {
        
$idioma->id $idioma->id// viva la redundancia XD
      
}
      else
      {
        
$idioma->id 1;
      }
      
      
$this->view->numidioma $idioma->id;


    } 
4. Ahora si quiero visualizar o usar la variable de sesion en otra función o en otro controlador no sé si es que pierdo la sesion o no está bien guardada la variable, pero no aparece.
Código PHP:
public function caracteristicasAction()    
    {        
       
$idioma = new Zend_Session_Namespace('id_idiomas');
       
$this->view->idioma_id $idioma->id;
    } 
Quizá mis métodos no sean los más adecuados, pero así es como me han dicho de hacerlo.
  #2 (permalink)  
Antiguo 12/04/2011, 04:09
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Sesiones en varios Controllers

A ver, vamos por partes, no es obligatorio inicializar la session, Zend_Session_Namespace lo va a hacer de forma automatica, pero es aconsejable para evitar problemas y va en el Bootstrap, deberia ser lo primero de tu Bootstrap.

Bootstrap.php
Código PHP:
Ver original
  1. protected function _initSession()
  2. {
  3.     Zend_Session::start();
  4. }

Luego deberias comprender que Zend_Session_Namespace, no es mas que un wrapper a session, lo que hace es darle una interfaz OOP a $_SESSION, asi que cuando haces esto:

Código PHP:
Ver original
  1. $idioma = new Zend_Session_Namespace('id_idiomas');

a un nivel mas bajo, estas haciendo esto:

Código PHP:
Ver original
  1. $idioma = $_SESSION['id_idiomas'];

asi que tanto para leer como para escribir siempre debes instanciar el correspondiente namespace:

Código PHP:
Ver original
  1. $idioma = new Zend_Session_Namespace('id_idiomas');
  2. //read
  3. $someValue = $idioma->someValue;
  4. //write
  5. $idioma->anotherValue = 'anothervalue';

Offtopic: 1000 reached! :)

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 12/04/2011 a las 05:32 Razón: typo

Etiquetas: frameworks-y-php-orientado-a-objetos, sesiones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 04:09.