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 "Carrito" 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 \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
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
}
}
Saludos! <!-- s --><img src="{SMILIES_PATH}/icon_wink.gif" alt="" title="Wink" /><!-- s -->
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.