Carrito de compras

Hola.

Estoy tratando de implementar un carrito de compras a través de una clase que cree llamada carrito y la almacene en lib/ Esta clase tiene un constructor Carrito, un metodo add($id, $producto, $cantidad, $precio), un metodo del($id) y un metodo _print() que devuelve una tabla creada con el carrito.

La idea es instanciar la clase en una action del controllador CarritoController llamada insert() que hace lo siguiente:
function insert()
{
	//-- si no esta creada la variable de sesion creo el objeto carrito y lo guardo dentro del sesion
	if(!Session::isset_data("CARRITO"))
	{
		Kumbia::import('lib.micayael.carrito');
		Session::set_data("CARRITO", new Carrito());
	}
		
	//-- Agrego el producto
	Session::get_data("CARRITO")->add(1, "producto1", 1, 20);
	
	//-- Obtengo la tabla con los productos
	$this->carrito = Session::get_data("CARRITO")->_print();

	//-- Redirecciono a una vista en donde voy a mostrar la tabla $this->carrito
	return $this->route_to("controller: principal", "action: carrito");
} 

Lo malo es que la primera vez funciona super bien pero despues sale este error



Fatal error: CarritoController::insert() [<a href='function.CarritoController-insert'>function.CarritoController-insert</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition &quot;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 D:\WAMP5_1.7.0\www\chiaraabbate\v1\controllers\carrito_controller.php on line 14


En teoria si se mantiene en la sesion deberia ir agregando los productos.

OBS: También leí que se podría usar una tabla temporal creando en el model una entidad carrito.php que extendiera de SessionRecord Según explica Andrés en un post del grupo pero al hacerlo me dice que tengo que extender de ActiveRecord.

Comentarios

  • edited 2:18
    Hola gente.

    Solo escribo para compartir con ustedes que logre solucionar el problema. Salió un carro de compras bien interesante.

    Les comento como lo hice.

    Cree una clase carrito que tiene los metodos add, del, getTotalGral, etc.

    Y en mi controller cree una propiedad carrito. Aquí kumbia ayuda bastante ya que al declarar una propiedad en el controller estas son persistentes y así me olvido de usar sesiones.

    Lo que si hay qeu hacer es cargar la libreria del carrito que cree dentro de config/core.ini.

    Felicidades a todos por kumbia. Voy a tratar de subir un ejemplo al grupo. Les dejo la estructura del controller

    class CarritoController extends ApplicationController
    {
    public $carrito;

    function index()
    {
    //-- muestra el carrito
    }


    function insert()
    {
    //-- llama al metodo add del carrito
    }

    function delete()
    {
    //-- llama al metodo del del carrito
    }
    }
  • Interesante colega, es un wen aporte a las dudas, que tu mismo te planteabas, de hecho esto es superinteresante, seria weno del ejemplo al cual te refieres para que mucha gente que desee aprender como funcionan este tipo de cosas abstractas pues las sepan.

    Saludos! <!-- s:wink: --><img src="{SMILIES_PATH}/icon_wink.gif" alt=":wink:" title="Wink" /><!-- s:wink: -->
  • hola, saben soy nuevo en kumbia, y pues la verdad que me ha gustado mucho, pero como les digo estoy comenzando y pues me gustaria consultarles algo, se q es mucho pedir, pero ahi les va.
    necesito que algun buen "amigo" me indique como hacer un carrito de compras, que permita agregar un porducto determinado y me los muestre en una tabla en la misma pantalla, y q al tener todo lo q necesito en la tabla me permita enviar esa informacion y almacenarla en una base de datos
    siendo sincera a duras penas e creado vistas y nada mas, como les digo se q es muco pedir pero me gustaria q si es posible me enviacen el ejemplo de la vista y el controlador y todo lo q necesite y como usarlo
    en verdad les digo les agradeceria muchisimo, claro si pueden y si no de todas formas gracias por tomarse el tiempo de leer mi mensaje.
  • hola que buenas tarde yo intento hacer algo similar solo que parece como si siempre se inicializara mi clase  agradeceria me pudieras ayudar
Sign In or Register to comment.