我正在使用Opencart 2.1.0.2 .

我开发了一个自定义选项,其中type = number和数量名称反映了复选框代码 . 这非常有效 . (它从管理中的添加顺序按钮和商店前面正确添加)

但是,我注意到如果我要使用产品编辑订单,首先会在#tab-product页面上显示选项type = number,但是一旦购物车选项加载就会消失 . 首先:
enter image description here
然后它消失:
enter image description here
注意:"Testing2: 30"是自定义选项type = text(name is customprice);它看起来很好,并在购物车系统内注册 .

EDIT 我已经发现#button-refresh(在进入此选项卡之前点击)没有正确地重新加载产品选项 . 我查看了数据库,并且类型正确显示 . 下面是单击#button-refresh时的代码 . 有关为什么不重新加载数量选项的任何线索?

// Add all products to the cart using the api
$('#button-refresh').on('click', function() {
$.ajax({
    url: $('select[name=\'store\'] option:selected').val() + 'index.php?route=api/cart/products&token=' + token,
    dataType: 'json',
    crossDomain: true,
    success: function(json) {
        $('.alert-danger, .text-danger').remove();

        // Check for errors
        if (json['error']) {
            if (json['error']['warning']) {
                $('#content > .container-fluid').prepend('<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> ' + json['error']['warning'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
            }

            if (json['error']['stock']) {
                $('#content > .container-fluid').prepend('<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> ' + json['error']['stock'] + '</div>');
            }

            if (json['error']['minimum']) {
                for (i in json['error']['minimum']) {
                    $('#content > .container-fluid').prepend('<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> ' + json['error']['minimum'][i] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
                }
            }
        }

        var shipping = false;

        html = '';

        if (json['products'].length) {
            for (i = 0; i < json['products'].length; i++) {
                product = json['products'][i];

                html += '<tr>';
                html += '  <td class="text-left">' + product['name'] + ' ' + (!product['stock'] ? '<span class="text-danger">***</span>' : '') + '
'; html += ' <input type="hidden" name="product[' + i + '][product_id]" value="' + product['product_id'] + '" />'; if (product['option']) { for (j = 0; j < product['option'].length; j++) { option = product['option'][j]; html += ' - <small>' + option['name'] + ': ' + option['value'] + '</small>
'; if (option['type'] == 'select' || option['type'] == 'radio' || option['type'] == 'image') { html += '<input type="hidden" name="product[' + i + '][option][' + option['product_option_id'] + ']" value="' + option['product_option_value_id'] + '" />'; } if (option['type'] == 'checkbox') { html += '<input type="hidden" name="product[' + i + '][option][' + option['product_option_id'] + '][]" value="' + option['product_option_value_id'] + '" />'; } if (option['type'] == 'quantity' || option['type'] == 'text') { html += '<input type="hidden" name="product[' + i + '][option][' + option['product_option_id'] + '][' + option['product_option_value_id'] + ']" value="" />'; } if (option['type'] == 'textarea' || option['type'] == 'customprice' || option['type'] == 'file' || option['type'] == 'date' || option['type'] == 'datetime' || option['type'] == 'time') { html += '<input type="hidden" name="product[' + i + '][option][' + option['product_option_id'] + ']" value="' + option['value'] + '" />'; } } } html += '</td>'; html += ' <td class="text-left">' + product['model'] + '</td>'; // html += ' <td class="text-right"><div class="input-group btn-block" style="max-width: 200px;"><input type="text" name="product[' + i + '][quantity]" value="' + product['quantity'] + '" class="form-control" /><span class="input-group-btn"><button type="button" data-toggle="tooltip" title="<?php echo $button_refresh; ?>" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-primary"><i class="fa fa-refresh"></i></button></span></div></td>'; html += ' <td class="text-right">' + product['price'] + '</td>'; html += ' <td class="text-right">' + product['total'] + '</td>'; html += ' <td class="text-center" style="width: 3px;"><button type="button" value="' + product['cart_id'] + '" data-toggle="tooltip" title="<?php echo $button_remove; ?>" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-danger"><i class="fa fa-minus-circle"></i></button></td>'; html += '</tr>'; if (product['shipping'] != 0) { shipping = true; } } } if (!shipping) { $('select[name=\'shipping_method\'] option').removeAttr('selected'); $('select[name=\'shipping_method\']').prop('disabled', true); $('#button-shipping-method').prop('disabled', true); } else { $('select[name=\'shipping_method\']').prop('disabled', false); $('#button-shipping-method').prop('disabled', false); } if (json['vouchers'].length) { for (i in json['vouchers']) { voucher = json['vouchers'][i]; html += '<tr>'; html += ' <td class="text-left">' + voucher['description']; html += ' <input type="hidden" name="voucher[' + i + '][code]" value="' + voucher['code'] + '" />'; html += ' <input type="hidden" name="voucher[' + i + '][description]" value="' + voucher['description'] + '" />'; html += ' <input type="hidden" name="voucher[' + i + '][from_name]" value="' + voucher['from_name'] + '" />'; html += ' <input type="hidden" name="voucher[' + i + '][from_email]" value="' + voucher['from_email'] + '" />'; html += ' <input type="hidden" name="voucher[' + i + '][to_name]" value="' + voucher['to_name'] + '" />'; html += ' <input type="hidden" name="voucher[' + i + '][to_email]" value="' + voucher['to_email'] + '" />'; html += ' <input type="hidden" name="voucher[' + i + '][voucher_theme_id]" value="' + voucher['voucher_theme_id'] + '" />'; html += ' <input type="hidden" name="voucher[' + i + '][message]" value="' + voucher['message'] + '" />'; html += ' <input type="hidden" name="voucher[' + i + '][amount]" value="' + voucher['amount'] + '" />'; html += ' </td>'; html += ' <td class="text-left"></td>'; html += ' <td class="text-right">1</td>'; html += ' <td class="text-right">' + voucher['amount'] + '</td>'; html += ' <td class="text-right">' + voucher['amount'] + '</td>'; html += ' <td class="text-center" style="width: 3px;"><button type="button" value="' + voucher['code'] + '" data-toggle="tooltip" title="<?php echo $button_remove; ?>" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-danger"><i class="fa fa-minus-circle"></i></button></td>'; html += '</tr>'; } } if (!json['products'].length && !json['vouchers'].length) { html += '<tr>'; html += ' <td colspan="6" class="text-center"><?php echo $text_no_results; ?></td>'; html += '</tr>'; } $('#cart').html(html); // Totals html = ''; if (json['products'].length) { for (i = 0; i < json['products'].length; i++) { product = json['products'][i]; html += '<tr>'; html += ' <td class="text-left">' + product['name'] + ' ' + (!product['stock'] ? '<span class="text-danger">***</span>' : '') + '
'; if (product['option']) { for (j = 0; j < product['option'].length; j++) { option = product['option'][j]; html += ' - <small>' + option['name'] + ': ' + option['value'] + '</small>
'; } } html += ' </td>'; html += ' <td class="text-left">' + product['model'] + '</td>'; // html += ' <td class="text-right">' + product['quantity'] + '</td>'; html += ' <td class="text-right">' + product['price'] + '</td>'; html += ' <td class="text-right">' + product['total'] + '</td>'; html += '</tr>'; } } if (json['vouchers'].length) { for (i in json['vouchers']) { voucher = json['vouchers'][i]; html += '<tr>'; html += ' <td class="text-left">' + voucher['description'] + '</td>'; html += ' <td class="text-left"></td>'; html += ' <td class="text-right">1</td>'; html += ' <td class="text-right">' + voucher['amount'] + '</td>'; html += ' <td class="text-right">' + voucher['amount'] + '</td>'; html += '</tr>'; } } if (json['totals'].length) { for (i in json['totals']) { total = json['totals'][i]; html += '<tr>'; html += ' <td class="text-right" colspan="4">' + total['title'] + ':</td>'; html += ' <td class="text-right">' + total['text'] + '</td>'; html += '</tr>'; } } if (!json['totals'].length && !json['products'].length && !json['vouchers'].length) { html += '<tr>'; html += ' <td colspan="5" class="text-center"><?php echo $text_no_results; ?></td>'; html += '</tr>'; } $('#total').html(html); }, error: function(xhr, ajaxOptions, thrownError) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } }); });