Common Problems

How to fix “Please specify the product’s option(s)” error?

Common error with Pro configurable product grid table view extension is conflict with ajax add to cart extension. The conflict is shown with error message “Please specify the product’s option(s)”

Please find below some ways to fix this issue with some ajax add to cart extension from various extension’s provider.

1. Conflict with Smartwave_Ajaxcart

Edit file : Smartwave/Ajaxcart/controller/IndexController.php

  • Edit function addAction();
  • Edit extends => Bss_Configurablegridview_CartController

Sample file: https://www.dropbox.com/s/1xzfpakoqftlk3t/IndexController.php?dl=0

2. Conflict with PT_Ajax

edit file: PT/Ajax/controllers/Checkout/CartController.php

  • Edit extends Bss_Configurablegridview_CartController
  • Edit function addAction();
  • Edit function updateItemOptionsAction();

Sample file: https://www.dropbox.com/s/qvlfx1jg2z6743r/PT_Ajax_CartController.php?dl=0

3. Conflict with Amasty Ajax add to cart

In the file: app/code/local/Amasty/Cart/controllers/AjaxController.php

Add function: _initProduct();

Edit function indexAction() into:

public function indexAction()
    {
      $idProduct = Mage::app()->getRequest()->getParam('product_id');
      $idProduct = Mage::app()->getRequest()->getParam('product')? Mage::app()->getRequest()->getParam('product'): $idProduct;
      $IsProductView = Mage::app()->getRequest()->getParam('IsProductView');
      $params = Mage::app()->getRequest()->getParams();
      $related = $this->getRequest()->getParam('related_product');
      unset($params['product_id']);
      unset($params['IsProductView']);

      if($this->getRequest()->getParam('configurable_grid_table') == 'Yes') {
        $params = $this->getRequest()->getParams();
        $config_super_attributes = $params['super_attribute_quickshop'];
        $cart = Mage::getSingleton('checkout/cart');
        $config_table_qty = $params['config_table_qty'];
        $options = isset($params['options']) ? $params['options'] : null;

        $qty_config = array();

        foreach($config_table_qty as $sup_qty => $_super_qty) {
          $qty_config[$sup_qty] =$_super_qty;
          $required += $_super_qty;
        }

        if($required == 0) {
          $this->_getSession()->addError($this->__('Cannot add the item to shopping cart.'));
          $this->_goBack();
          return;
        }

        $config_table_qty = $qty_config;

        foreach($config_super_attributes as $sId => $config_attribute) {
          if(!isset($config_table_qty[$sId]) || $config_table_qty[$sId]=='' || !is_numeric($config_table_qty[$sId])){
            if($config_table_qty[$sId] != '0'){
              $config_table_qty[$sId] = 1;
            }
          }

          if(isset($config_table_qty[$sId]) && $config_table_qty[$sId]!='' && $config_table_qty[$sId] > 0) {
            $product= $this->_initProduct();
            $related= $this->getRequest()->getParam('related_product');

            if (!$product) {
              $this->_goBack();
              return;
            }

            if(isset($config_table_qty[$sId])) {
              $params = array();
              $params['qty'] = $config_table_qty[$sId];
              $params['super_attribute'] = $config_attribute;

              if($options != null) $params['options'] = $options;

              try {
                if($params['qty'] > 0 && $params['qty']!='') {
                  $cart->addProduct($product, $params);
                  if (!empty($related)) {
                        $cart->addProductsByIds(explode(',', $related));
                  }
                  $cart->save();
                  Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
                  if (!$cart->getQuote()->getHasError()){
                      $responseText = $this->addToCartResponse($product, $cart, $IsProductView, $params,0);    
                  }    
                } else {
                  $responseText = $this->showOptionsResponse($product, $IsProductView);    
                }
              } catch (Exception $e) {
                  $responseText = $this->addToCartResponse($product, $cart, $IsProductView, $params, $e->getMessage());
                  Mage::logException($e);
              } 
            }
          }
        }
      } else {
  	    if($related) unset($params['related_product']);
          $product = Mage::getModel('catalog/product')
                     ->setStoreId(Mage::app()->getStore()->getId())
                     ->load($idProduct);
          $responseText = '';
          if ($product->getId())
          {
              if(!array_key_exists('qty', $params)) {
                  $params['qty'] = $product->getStockItem()->getMinSaleQty();
              }
              try{
                  if(($product->getTypeId() == 'simple' && !($product->getRequiredOptions() || (Mage::getStoreConfig('amcart/general/display_options') && $product->getHasOptions())))
                      || count($params) > 2
                      || ($product->getTypeId() == 'virtual' && !($product->getRequiredOptions() || (Mage::getStoreConfig('amcart/general/display_options') && $product->getHasOptions()))))
                  {
                      $cart = Mage::getSingleton('checkout/cart');
                      $cart->addProduct($product, $params);
  		            if (!empty($related)) {
                          $cart->addProductsByIds(explode(',', $related));
                      }
                      $cart->save();
                      Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
                      if (!$cart->getQuote()->getHasError()){
                          $responseText = $this->addToCartResponse($product, $cart, $IsProductView, $params,0);    
                      }    
                  }
                  else{
                       $responseText = $this->showOptionsResponse($product, $IsProductView);    
                  }
                      
              }
              catch (Exception $e) {
                  $responseText = $this->addToCartResponse($product, $cart, $IsProductView, $params, $e->getMessage());
                  Mage::logException($e);
              }
          }
        }
        $this->getResponse()->setBody($responseText);
    }

Sample file: https://www.dropbox.com/s/vz9bjgx9rd2ue97/AjaxController.php?dl=0

4. Conflict with Magentothem_Ajaxcartsuper

Edit file: /app/code/local/Magentothem/Ajaxcartsuper/controllers/AjaxcartController.php

Edit function addAction() to:

{quote}public function addAction()
    {
		header("Content-type: application/json");

        if($this->getRequest()->getParam('callback')) {
            $cart   = $this->_getCart();
            $ajaxData = array();
            $productInfo = array();
            $params = $this->getRequest()->getParams();

            try {
                if($this->getRequest()->getParam('configurable_grid_table') == 'Yes') {
                    $params = $this->getRequest()->getParams();
                    $config_super_attributes = $params['super_attribute_quickshop'];
                    $cart   = $this->_getCart();
                    $config_table_qty = $params['config_table_qty'];
                    $options = isset($params['options']) ? $params['options'] : null;
                    $qty_config = array();
                    foreach($config_table_qty as $sup_qty => $_super_qty) {
                        $qty_config[$sup_qty] =$_super_qty;
                        $required += $_super_qty;
                    }
                    if($required == 0) {
                      $this->_getSession()->addError($this->__('Cannot add the item to shopping cart.'));
                      $this->_goBack();
                      return;
                    }
                    $config_table_qty = $qty_config;
                    foreach($config_super_attributes as $sId => $config_attribute) {
                      if(isset($config_table_qty[$sId]) && $config_table_qty[$sId]!='' && $config_table_qty[$sId] > 0) {
                        $product= $this->_initProduct();
                        $related= $this->getRequest()->getParam('related_product');
                        if (!$product) {
                          $this->_goBack();
                          return;
                        }
                        if(isset($config_table_qty[$sId])) {
                          $params2 = array();
                          $params2['qty'] = $config_table_qty[$sId];
                          $params2['super_attribute'] = $config_attribute;
                          if($options != null) $params2['options'] = $options;
                          if($params2['qty'] > 0 && $params2['qty']!='') {
                            $cart->addProduct($product, $params2);
                            if (!empty($related)) {
                              $cart->addProductsByIds(explode(',', $related));
                            }
                          }
                        }
                      }
                    }
                } else {
                    if (isset($params['qty'])) {
                        $filter = new Zend_Filter_LocalizedToNormalized(
                            array('locale' => Mage::app()->getLocale()->getLocaleCode())
                        );

                        $params['qty'] = $filter->filter($params['qty']);
                    }

                    $product = $this->_initProduct();
                    if($params['type_product']==1) {
                        $productInfo['type_product'] = $product->getTypeId();
                        $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($productInfo));
                        return ;

                    }

                    $related = $this->getRequest()->getParam('related_product');

                    /**
                     * Check product availability
                     */
                    if (!$product) {
                        	$ajaxData['status'] = 0;
                            $ajaxData['message'] = $this->__('Unable to find Product ID');
                    }

                    $cart->addProduct($product, $params);

                    if (!empty($related)) {
                        $cart->addProductsByIds(explode(',', $related));
                    }
                }

                $cart->save();
                $this->_getSession()->setCartWasUpdated(true);

                /**

                 * @todo remove wishlist observer processAddToCart

                 */

                Mage::dispatchEvent('checkout_cart_add_product_complete',

                    array('product' => $product, 'request' => $this->getRequest(), 'response' => $this->getResponse())

                );



                if (!$this->_getSession()->getNoCartRedirect(true)) {
                    if (!$cart->getQuote()->getHasError()){
                        $message = $this->__('%s was added to your shopping cart.', Mage::helper('core')->escapeHtml($product->getName()));
                       // $this->_getSession()->addSuccess($message);
                        $ajaxData['status'] = 1;
                        $this->loadLayout();
                        $sidebarCart = "";
                        $mini_cart = "";
                        $toplink = "";
						
                        if ($this->getLayout()->getBlock('cart_sidebar')) {
                            $sidebarCart = $this->getLayout()->getBlock('cart_sidebar')->toHtml();
                        }

                        if ($this->getLayout()->getBlock('cart_sidebar_mini')) {
                            $mini_cart = $this->getLayout()->getBlock('cart_sidebar_mini')->toHtml();
                        }

                        if ($this->getLayout()->getBlock('top.links')) {
                            $toplink = $this->getLayout()->getBlock('top.links')->toHtml();
                        }

                        $pimage = Mage::helper('catalog/image')->init($product, 'small_image')->resize(55);
                        $ajaxData['sidebar_cart'] = $sidebarCart;
                        $ajaxData['top_link'] = $toplink;
                        $ajaxData['mini_cart'] = $mini_cart;
                        //show or hide cofirmbox when add product to cart

                        if (Mage::getStoreConfig('ajaxcartsuper/ajaxcartsuper_config/show_confirm')) {
                            $ajaxData['product_info'] = Mage::helper('ajaxcartsuper/data')->productHtml($product->getName(), $product->getProductUrl(), $pimage);
                        }

                    }

                }
            } catch (Mage_Core_Exception $e) {
                $msg = "";
				
                if ($this->_getSession()->getUseNotice(true)) {
                    $msg = $e->getMessage();
                } else {
                    $messages = array_unique(explode("\n", $e->getMessage()));
                    foreach ($messages as $message) {
                        $msg .= $message . '<br/>';
                    }
                }

                $ajaxData['status'] = 0;
                $ajaxData['message'] = $msg;
                $ajaxData['type_product_ajax'] = 1;

            } catch (Exception $e) {
                $ajaxData['status'] = 0;
                $ajaxData['message'] = $this->__('Cannot add the this product to shopping cart.');
            }
           $this->getResponse()->setBody($this->getRequest()->getParam('callback').'('.Mage::helper('core')->jsonEncode($ajaxData).')');
           return;

        }  else {
            parent::addAction();
        }
    }{quote}

Sample file: https://www.dropbox.com/s/frkidfqdke3p5kp/AjaxcartController.php?dl=0