Добавление свойств товара в корзину

2017-02-09T13:18:26+03:00 2017-02-09T13:18:26+03:00
0
Пользователи
0
Новичок
Уважаемые коллеги,помогите, пожалуйста, разобраться с такой проблемой. Есть страница товара http://рыболовные-мушки.рф/Рыболовная-мушка-"Палмер-Синель"-p3.html на OpenCart версии  1.5.6. Там есть селекты цвета иразмера, которые не добавляются вместе с товаром в корзину. В хтмл они описаны так:
<select name="option[3]" data-id="3" onchange="changeChoice()" class="serequired">
    <option value=""> --- Выберите --- </option>    
   ?<option value="27">10 Черный / Гризли</option>       
   ?..........................
</select>

и 
<select name="option[4]" data-id="4" onchange="changeChoice()"class="serequired">       
   ?<option value=""> --- Выберите --- </option>    
   ?<option value="30">10</option>    
   ?<option value="32">12</option>    
   ?<option value="31">14</option>
</select>
Кнопка "Купить":
<input type="button" value="Купить" id="button-cart" class="button" onclick="addToCart('3');">
В common.js
function addToCart(product_id, quantity) {    
   ?quantity = typeof(quantity) != 'undefined' ? quantity : 1;    
   ?$('.vserror').remove();        
   ?p=0;    
   ?$(".serequired").each(function(){        
   ?   ?if($(this).val()==''){            
   ?   ?   ?b=$(this).prev().prev().html();            
   ?   ?   ?$(this).after('<div class="vserror">Поле '+b+'должно быть заполнено!</div>');            
   ?   ?   ?p=1;        
   ?   ?}     
   ?})        
   ?if(p!=0)return false;         

   ?$.ajax({        
   ?   ?url: 'index.php?route=checkout/cart/add',        
   ?   ?type: 'post',        
   ?   ?data: 'product_id=' + product_id + '&quantity=' + quantity,        
   ?   ?dataType: 'json',        
      ??success: function(json) {
            $('.success,.succesv, .warning, .attention, .information, .error').remove();
            if(json.error != null && json.error.option != null)
            {
                for(var ii in json.error.option)
                {
                    c="*[name='option["+ii+"]']";
                    b=".option[id='option-"+ii+"']";
                    if($(c).val()=='')$(b).after('<div class="vserror">'+json.error.option[ii]+'</div>');
                }
            }
            else
            {
                if (json['redirect']) 
   ?   ?   ?   ?{
   ?                location = json['redirect'];
   ?            }
                if (json['success']) 
   ?   ?   ?   ?{
   ?                $('#notification').html('<div class="succesv">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');
                    //$('.success').show('slow');
                    $('#cart-total').html(json['total']);
                    $("#cartcons").html(json.totaltop);
                    //                $('html, body').animate({ scrollTop: 0 }, 'slow');
                }
            }
        }
    });
}

А где же здесь передача этих опций? Причем в чистом двиге та же самая ерунда... Но идем в контроллер checkout/cart.php function add(). Тут написано: 
if (isset($this->request->post['option'])) {
   ?$option = array_filter($this->request->post['option']);
} 
else {
    $option = array();                
}
т.е. опций должны"поститься"аяксом. Но в каком виде? 
Ниже по коду написано:
$this->cart->add($this->request->post['product_id'], $quantity, $option, $profile_id);
А сама эта публичная функция описана так в system/library/cart.php:
public function add($product_id, $qty = 1, $option, $profile_id ='') {
        $key = (int) $product_id . ':';
        if ($option) {
            $key .= base64_encode(serialize($option)) . ':';        
   ?   ?}  
      ??else {
            $key .= ':';
        }
        if ($profile_id) {
            $key .= (int) $profile_id;
        }
        if ((int) $qty && ((int) $qty > 0)) {
            if (!isset($this->session->data['cart'][$key])) {
                $this->session->data['cart'][$key] = (int) $qty;
            }
            else {
                $this->session->data['cart'][$key] += (int) $qty;
            }
        }
        $this->data = array();
      }
Так вот вопрос: в каком виде я должен "аяксить" опции в common.js в addToCart, чтобы они верно располагались в корзине, а потом и в заказе – т.е. чтобы они правильно расположились в таблице заказов БД?
Большое спасибо!
 
Доступ закрыт.
  • Вам запрещено отвечать в темах данного форума.