raistlinsk Posted January 11, 2015 Share Posted January 11, 2015 Buenas, La verdad es que llevo dandole vueltas a esto un par de días y creo que me voy a volver loco. Necesito agregar un producto al carrito desde php (No me vale enviar un formulario) y después redirigir al carrito donde está ese producto. Primero ejecuto lo siguiente: if (!isset($this->context->cart->id) OR !$this->context->cart->id) { $this->context->cart->add(); } else { $cartProducts = $this->context->cart->getProducts(); foreach ($cartProducts as $cartProduct) { $this->context->cart->deleteProduct($cartProduct['id_product']); } } Si no encuentro carrito creo uno, y si lo encuentra, elimino todos los productos para que luego al cargar el mio solo aparezca ese. Para agregar el producto al carrito, uso el metodo UpdateQty, si ya había algún producto en el carrito, se elimina y aparece. Hasta aquí todo bien, se añade el producto correctamente. El problema está, en que cuando no hay productos en el carrito y lo creo, al redirijo al carrito, este aparece vacio. En cambio, si me voy al backoffice veo que hay un carrito con mi producto, y otro en blanco. $this->context->cart->updateQty($quantity, $idproduct, $idattribute); Tools::redirectLink('order-opc'); No entiendo si estoy haciendo algo mal, en la creación del carrito, en el agregar el producto, o en la redirección. ¿Alguien me puede echar una mano? Gracias. Link to comment Share on other sites More sharing options...
raistlinsk Posted January 11, 2015 Author Share Posted January 11, 2015 Se me olvidó ponerlo, uso la versión 1.5.6.2 de prestashop. Gracias. Link to comment Share on other sites More sharing options...
raistlinsk Posted January 11, 2015 Author Share Posted January 11, 2015 Vale, ya he dado con la solución. Una vez creado el carrito, me faltaba asignar el carrito a las cookies:$this->context->cookie->id_cart = (int)$this->context->cart->id; Quedan todo así: if (!isset($this->context->cart->id) OR !$this->context->cart->id) { $this->context->cart->add(); $this->context->cookie->id_cart = (int)$this->context->cart->id; } else { $cartProducts = $this->context->cart->getProducts(); foreach ($cartProducts as $cartProduct) { $this->context->cart->deleteProduct($cartProduct['id_product']); } } $this->context->cart->updateQty($quantity, $idproduct, $idattribute); Tools::redirectLink('order-opc'); Espero que a alguien le sirva. Link to comment Share on other sites More sharing options...
galindogadea Posted January 11, 2015 Share Posted January 11, 2015 Vale, ya he dado con la solución. Una vez creado el carrito, me faltaba asignar el carrito a las cookies: $this->context->cookie->id_cart = (int)$this->context->cart->id; Quedan todo así: if (!isset($this->context->cart->id) OR !$this->context->cart->id) { $this->context->cart->add(); $this->context->cookie->id_cart = (int)$this->context->cart->id; } else { $cartProducts = $this->context->cart->getProducts(); foreach ($cartProducts as $cartProduct) { $this->context->cart->deleteProduct($cartProduct['id_product']); } } $this->context->cart->updateQty($quantity, $idproduct, $idattribute); Tools::redirectLink('order-opc'); Espero que a alguien le sirva. Por simple curiosidad ¿Puedes compartir el codigo completo de la pagina "externa"? ¿Esa pagina es un listado de productos que se añaden al carrito? PD: Ya se que has comentado que has solucionado el tema, pero me ha entrado curiosidad. Por cierto, se te ha olvidado añadir la palabra "Solucionado": http://www.prestashop.com/forums/topic/269515-solucionado-%C2%BFcomo-poner-la-palabra-solucionado-en-el-titulo-del-tema/ al titulo del tema. Link to comment Share on other sites More sharing options...
Recommended Posts