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

Clase Carrito en Zend

Estas en el tema de Clase Carrito en Zend en el foro de Zend en Foros del Web. Hola Estoy haciendo una aplicación e-commerce en zend y tengo una duda, yo he creado mi clase carrito para manejar todo lo referente a la ...
  #1 (permalink)  
Antiguo 02/11/2010, 05:09
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 8 meses
Puntos: 0
Clase Carrito en Zend

Hola

Estoy haciendo una aplicación e-commerce en zend y tengo una duda, yo he creado mi clase carrito para manejar todo lo referente a la cesta de la compra, como hacía antes.

Pero mi duda es como registrar la variable de sesión donde introduzco el objeto.

Lo que intento hacer es crear una namescape y dentro introduzco mi clase para que se inicialice, pero luego no la rescato bien.

Me podrían ayudar?

Como creo un objeto en el bootstrap y la introduzco en una variable de sesión para luego poder recogerla en el controller?

Un saludo.
  #2 (permalink)  
Antiguo 02/11/2010, 09:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Clase Carrito en Zend

Siempre y cuando tengas tu autoloader correctamente no debes de tener problemas al registrar tu objeto en un namespace la sesión.

¿Que haz intentado?
  #3 (permalink)  
Antiguo 02/11/2010, 09:52
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Clase Carrito en Zend

Hola,

He creado una clase llamada carrito, con su constructor y sus funciones.

En el bootstrap he creado un namescape.

Código PHP:
Ver original
  1. $sesionDatos=new Zend_Session_Namespace("carrito");
  2.  
  3. $sesionDatos->cart=new My_Basket();

Y luego en el controller

Código PHP:
Ver original
  1. $sesionDatos=new Zend_Session_Namespace("carrito");
  2. $carrito=$sesionDatos->cart;

Pero claro, no funciona.
  #4 (permalink)  
Antiguo 02/11/2010, 09:52
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 11 meses
Puntos: 65
Respuesta: Clase Carrito en Zend

¿el autoloader puede cargar clases que no sean de zend?
  #5 (permalink)  
Antiguo 02/11/2010, 09:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Clase Carrito en Zend

¿Que error te da?
  #6 (permalink)  
Antiguo 02/11/2010, 09:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Clase Carrito en Zend

Cita:
Iniciado por Dany_s Ver Mensaje
¿el autoloader puede cargar clases que no sean de zend?
Sí el autoloader puede cargar todo tipo de clases solo tienes que "enseñarle" como hacerlo.

Saludos.
  #7 (permalink)  
Antiguo 02/11/2010, 10:05
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Clase Carrito en Zend

Me da esto:

Código ERROR:
Ver original
  1. Fatal error: Zend_View_Helper_Carrito::resumenCarrito() [<a href='zend-view-helper-carrito.resumencarrito'>zend-view-helper-carrito.resumencarrito</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition &quot;Zend_My_Carrito&quot; of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in C:\www\the-art-aid\application\modules\default\views\helpers\carrito.php on line 12

Lo llamo desde un view helper para mostrar el resumen de Carrito en la web.
  #8 (permalink)  
Antiguo 02/11/2010, 10:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Clase Carrito en Zend

Mmm es muy raro si te fijas dice que el objeto es del tipo Zend_My_Cart y tu estas instanciando un My_Cart, no estas cometiendo un error en algun lado?
  #9 (permalink)  
Antiguo 02/11/2010, 10:37
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Clase Carrito en Zend

Perdona Gator, he obviado un dato sin darme cuenta

Pero es que la carpeta My la tengo dentro de Zend porque luego en mi servidor no me va a no ser que lo haga así.

Y cuando llamo a la clase lo hago así:

Código PHP:
Ver original
  1. $sesionDatos->cart=new Zend_My_Basket();

Un saludo
  #10 (permalink)  
Antiguo 02/11/2010, 10:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Clase Carrito en Zend

Deberías de ponerlo mejor dentro de tu carpeta library en tu proyecto, luego en tu application.ini indicas cargar tus clases usando autoloaderNamespaces[] = "My_" con eso ya va a cargar todos tus archivos que esten en /library/My/*

Saludos.
  #11 (permalink)  
Antiguo 03/11/2010, 04:00
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Clase Carrito en Zend

entonces si estaría introduciendo bien mi objeto en la variable de sesion?.

Es que me sigue sin funcionar bien.
  #12 (permalink)  
Antiguo 03/11/2010, 08:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Clase Carrito en Zend

Pues sí yo así lo hago y no tengo problema, otra opción que puedes probar es en lugar de guardar todo el objeto en la sesión que mejor tu objeto internamente sus datos los guarde en una sesión.

Saludos.
  #13 (permalink)  
Antiguo 03/11/2010, 08:52
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Clase Carrito en Zend

Ya parece que me va, pero me pasa una cosa.

Resulta que yo creo una variable de tipo array dentro de la clase.

Código PHP:
Ver original
  1. protected $productos=array();

Y cuando la rescato en esta función:

Código PHP:
Ver original
  1. public function productos() {
  2.    return $this->productos;
  3. }

Al ejecutar esta función me dice que no hay ningún array, vale que está vacio, pero aunque este vacio un foreach debe reconocerlo y no hacer el bucle, pero me dice que no es apto para utilizar en un foreach.
  #14 (permalink)  
Antiguo 03/11/2010, 14:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Clase Carrito en Zend

Muy raro sin ver tu código completo no sabría porque te dice que no es un array.

Saludos.

Etiquetas: carrito, clase
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




La zona horaria es GMT -6. Ahora son las 13:54.