Количество товара в корзину передать

Тема в разделе "Общие вопросы", создана пользователем DiMoss, 18 мар 2016.

  1. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Имеется вот такая конструкция....
    Код:
    <input type="text" value="<?php echo $product['minimum']; ?>" class="item-<?php echo $product['product_id'];?>" />
    <button type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');" class="button" />
      <i class="fa fa-shopping-cart"></i>
    </button>
    
    По клику на кнопку срабатывает функция....
    PHP:
    function addQtyToCart(product_idqty_minimum) {
      var 
    qty = $('.item-' product_id).val();
      if ((
    parseFloat(qty) != parseInt(qty)) || isNaN(qty)) {
        
    qty qty_minimum;
      }
      
    cart.add(product_idqty);
    }
    Проблема создаётся тогда, когда на одной странице есть два одинаковых товара. Например один в модуле АКЦИИ, а второй в ПОСЛЕДНИЕ. У их инпута один и тот же класс, соответственно когда я пытаюсь положить в корзину например 10 шт, то функции передаются данные из другого инпута с таким же классом.

    В голову пришла лишь идея дополнительной маркировки инпутов. Например в контроллере special.php и latest.php, в массив продукта добавить элемент 'marker' со значением special и latest.
    В шаблон внести следующие изменения.....
    Код:
    <input type="text" value="<?php echo $product['minimum']; ?>" class="item-<?php echo $product['product_id'];?>-<?php echo $product['marker'];?>" />
    <button type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>', '<?php echo $product['marker'];?>');" class="button" />
    То бишь делаем класс инпута уникальным и передаём функции значение "маркера" $product['marker']...
    PHP:
    function addQtyToCart(product_idqty_minimummarker) {
      var 
    qty = $('.item-' product_id '-' marker).val();
      if ((
    parseFloat(qty) != parseInt(qty)) || isNaN(qty)) {
        
    qty qty_minimum;
      }
      
    cart.add(product_idqty);
    }
    Всё бы ничего, но ведь теперь надо все товары "промаркировать".

    Либо выносить эту функцию отдельно в каждый шаблон (сейчас она в common.js) и там уже задавать уникальность классов для инпута.

    Либо каким то образом заставить передавать данные именно из того инпута из карточки которого жмётся кнопка "в корзину".

    Может у кого то появится идея!
     
    Последнее редактирование: 18 мар 2016
  2. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    924
    Симпатии:
    240
    Чёт было подобное уже. Как делал уже не помню...
    У продуктовых модулей есть такое: <?php echo $data['name']; ?><?php echo $module; ?>, вот их можно использовать...
     
    Последнее редактирование: 18 мар 2016
  3. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    а зачем писать свой js когда штатный и так принимает кол-во?? Про кол-во даже инструкция есть в соответствующем разделе ))
     
  4. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Принимать то принимает! Но как его туда передать? Для этого и написан код.

    А можно ссылку! Не смог найти!
     
  5. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    DiMoss нравится это.
  6. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    @Vlad, спасибо! Такое решение мне по душе.
    А при дублировании товара помогает вот это....
    PHP:
     $(this).parent().find('#quantity').val() );
    Собственно это и есть решение к моей проблеме! Но я пожалуй снесу свой скрипт и буду пользоваться штатным.