Jump to content

add to cart function from custom module in prestashop 1.7


prabhakaran3492

Recommended Posts

I add the product to cart from my custom module by using the following code. It's working.

My Javascript file

var pid = $('#product_id').val();
$.ajax({
    url : url+'&action=savecustomdataAction',
    type : "POST",
    data : { customdata : customdata, qty : 1, pid : pid },

    success : function(response) {
      if(response.message == true) {
        $('#addtocart_form').submit();
      }
    }
  });

My .tpl file

<script>
  var url ="{url entity='module' name='appcustomizer' controller='ajaxfunc' params = []}";
</script>
<form name="addtocart" id="addtocart_form" method="POST" action="{$urls.pages.cart}">
<input type="hidden" name="id_product" id="product_id" value="{Tools::getValue('pid')}" />
  <input type="hidden" name="token" value="{$static_token}">

// Your Code Here...

 <input type="submit" id="addtocart" class="cart-btn" value="Add To Cart" /> 

My Custom Controller 

public function displayAjaxsavecustomdataAction() {        
      $customData = Tools::getValue('customdata');
      $idProduct = Tools::getValue('pid'); // for me it's always one
      $qty=Tools::getValue('qty'); // always add one item
      $attribute = 74;

       // get cart id if exists
       if ($this->context->cookie->id_cart)
       {
         $cart = new Cart($this->context->cookie->id_cart);
       }

      // create new cart if needed

      if (!isset($cart) OR !$cart->id)
      {
        $cart = new Cart($this->context->cookie->id_cart);
        $cart->id_customer = (int)($this->context->cookie->id_customer);
        $cart->id_address_delivery = (int) (Address::getFirstCustomerAddressId($cart->id_customer));
        $cart->id_address_invoice = $cart->id_address_delivery;
        $cart->id_lang = (int)($this->context->cookie->id_lang);
        $cart->id_currency = (int)($this->context->cookie->id_currency);
        $cart->id_carrier = 1;
        $cart->recyclable = 0;
        $cart->gift = 0;
        $cart->add();
        $this->context->cookie->id_cart = (int)($cart->id);
      }

      // get product to add into cart
        $productToAdd = new Product((int)($idProduct), true, (int)($this->context->cookie->id_lang));
        $cart->update();
        $cart = $this->context->cart;
        $updateQuantity = $cart->updateQty((int)($qty), (int)($idProduct),(int)($attribute), false);

        $cart->update();
       header('Content-Type: application/json');
       die(Tools::jsonEncode(['message' => true]));
      }
Edited by prabhakaran3492 (see edit history)
  • Like 2
Link to comment
Share on other sites

  • 5 years later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...